Vue.js的$emit传递数据和$on接收不了

图片描述
点击按钮“点击”,$on接收不了数据
1.app.vue

<template>
<div id="app">

<h3>父组件app:{{msg2}}</h3>   
<gfooter></gfooter> 

</div>
</template>
<script>
import gfooter from './components/gfooter.vue'
import Vue from 'vue'

export default {
name: 'app',
data: function () {

return {   
  msg2:'hello'
}   

},
components:{gfooter},
created:function (){

this.$on('change',function(val){
  console.log(val);
  this.msg2 = val;
  
})  

}
}
</script>

2.gfooter.vue

<template>
<div id="footer">

<p>子组件gfooter:{{msg}} <button @click="showTools">点击</button></p>

</div>
</template>

<script>
export default {
name: 'footer',
data () {

return { 
  msg:'父组件,hello',   
}  

},
methods:{

showTools(){
    this.$emit('change',this.msg);
    console.log('this.msg:'+this.msg)
}

}
}
</script>

阅读 5.9k
2 个回答

你这个$emit('created')和$on('change'),名字得一样。
还有父子间的通信用props,eventbus没刷新页面,不会运行$on,props参考https://cn.vuejs.org/v2/api/#...

应该这么写吧

<h3>父组件app:{{msg2}}</h3>   
<gfooter @change="function(){}"></gfooter> 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题