请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

<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(){里面内容就是加载不出来
图片描述

正在回答 回答被采纳积分+3

1回答

Dell 2019-05-23 09:10:40

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

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_微笑王子_0 #1
    用method 可以调用。。
    vue  的api上有这样一句话
    template  compilation is performed ahead of  time if using a buid step e.g. single  file componends
    提前怎么编译?
    回复 有任何疑惑可以回复我~ 2019-05-24 14:33:59
  • Dell 回复 提问者 qq_微笑王子_0 #2
    method是因为执行的时候调用,这时候类已经完成实例化了。
    回复 有任何疑惑可以回复我~ 2019-05-25 18:12:38
  • 提问者 qq_微笑王子_0 回复 Dell #3
    请问下老师有没有什么类似于生命周期钩子一样加载完才调用的方法?
    回复 有任何疑惑可以回复我~ 2019-05-25 22:10:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信