明明已经实例化全局方法,为什么在主方法里的bas为undefined??

来源:4-5 非父子组件间的传值

qq_微笑王子_0

2019-05-21

<div id="app">
	<child content="lee"  @had="hh"></child>
	<child content="dell" @had="hh"></child>

</div>

<script type="text/javascript">
		
			//修改vue 原型链
			//这里明明已经全局对象为什么在主控件里面调用不到
			Vue.prototype.bas=new Vue()		
			//而z=3用mthods又能使用
			Vue.prototype.z=3;
	Vue.component("child",
	{
		props:{
			content:{
				type:[String]	
			}
		},
		//模板方法为had
		template:"<div @click='had'>{{content}}</div>",
		methods:{
			had:function(){
		

	this.$emit("had",this.content)
this.bas.$on("change",this.content)
			}	
		},
		/* mounted:function(){
		console.log('挂在后'+this.content)
		var this_=this
		this.bas.$on('change',function(msg){
		console.log("bas里面的this为"+this.content)
		console.log("this_"+this_.content)
		console.log("传过来的thiscontent"+msg)
		this_.content=msg
		})
		} */
		
	}
	
	
	)
	var vm=new Vue({
	el:"#app",
	
//作为methods接收到了
methods:{
hh:function(mm){
alert("这里是hhhad"+vm.z)


}

	},
	//但是mounted接受不到?
	mounted:function(){
	alert("这里是hhhad"+vm.z)
	vm.bas.$on('change',function(msg){
		console.log("bas里面的this为"+this.content)
		console.log("this_"+this_.content)
		console.log("传过来的thiscontent"+msg)
		this_.content=msg
		})
	}
	

	

})
</script>
  </body>

明明有bas这方法但是mounted:function(){里面内容就是加载不出来
图片描述

写回答

1回答

Dell

2019-05-23

我想了下,我觉得在这个时刻,vue的实例可能未完成初始化,你直接就去用一些参数就会有问题。你不要用vm,另外建一个vue实例在这里用,应该是没问题的

0
7
qq_微笑王子_0
回复
Dell
用短点查询到大概知道问题出在哪里了,vue是先加载控件然后实例化vm 各种加载问题
2019-06-01
共7条回复

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

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

10675 学习 · 8191 问题

查看课程