老师,关于这个this_=this 这一点有点不懂,打印this时是一个vue,而通过var this_=this 之后,this_打印的是组件?
来源:4-5 非父子组件间的传值
weibo_一路向北都是谎言_03667176
2019-05-16
写回答
2回答
-
Dell
2019-05-17
因为外层的this 是组件,而函数内部的this是 this.bus实例
00 -
六一888
2019-05-16
this.bus.$on 里面的函数的 this 指的是 bus 指向的 vue 实例,而 this_ 是将 vue 全局组件的 this 赋值给它。向外触发事件,以及监听事件都是由 bus 指向的 vue 实例来完成的,在课程中说:当一个 child 向外触发事件后,两个 child 都进行了事件的监听。我也没有明白第二句话的具体意思,我在控制台测试后,发现如果不通过 bus 这个属性来监听事件,那么两个 child 并不会同时监听事件,无法达到非父组件传值的效果。希望老师看到我的回答后,可以回答一下我的疑惑点。
我的猜想是:当两个 child 都渲染到页面时,因为两个 child 中都有属性 bus,而都指向同一个 vue 实例,这个实例监听 change 事件时,也就是说这两个 child 都会同时监听 change 事件,所以函数中的代码会被执行两次。但是这样猜想后,又不能完全认同,因为当使用 vue 全局组件去触发事件和监听事件时,当两个 child 渲染到页面后,两个 child 的监听事件为什么不是分别进行的?而只有点击的 child 在监听?
042019-05-19
相似问题