是可以通过updated传值但是为什么要点击两三次才有正确传值结果?
来源:4-5 非父子组件间的传值
qq_微笑王子_0
2019-05-27
<body>
<div id="app">
<child content="lee" @cc="hh"></child>
<child content="dell" @cc="hh"></child>
{{inputValue}}
</div>
<script type="text/javascript">
//修改vue 原型链
Vue.prototype.bas=new Vue()
Vue.prototype.z=3;
Vue.component("child",
{
props:{
content:{
type:[String]
}
},
//模板方法为had
template:"<div @click='had'>{{content}}</div>",
methods:{
had:function(){
this.bas.$emit("change",this.content)
this.$emit("cc")
}
},
}
)
var vm=new Vue({
el:"#app",
data:{
inputValue:1
},
methods:{
hh:function(mm){
this.inputValue=2
}
},
//原型链的z一下子获得但是bas.on第一次不会触发?
updated:function(){
console.log('触发updated'+"获取vue原型链的z"+vm.z)
var this_=this
vm.bas.$on('change',function(msg){
alert("进入方法 ")
console.log("bas里面的this为"+this_.content)
console.log("this_"+this_.content)
console.log("传过来的thiscontent"+msg)
this_.content=msg
})
}
})
</script>
</body>
写回答
1回答
-
因为当 Vue 监听到数据发生更新时,update 才会被执行,bus 指向的 vue 实例才开始监听 change 事件,你只有再点击一次,才能监听到。你应该使用 mounted
052019-05-28
相似问题