是可以通过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回答

六一888

2019-05-27

因为当 Vue 监听到数据发生更新时,update 才会被执行,bus 指向的 vue 实例才开始监听 change 事件,你只有再点击一次,才能监听到。你应该使用 mounted

0
5
qq_微笑王子_0
非常感谢!
2019-05-28
共5条回复

Vue2.5-2.6-3.0开发去哪儿网App 零基础入门到实战

课程紧跟Vue3版本迭代,企业主流版本Vue2+Vue3全掌握

10675 学习 · 8191 问题

查看课程