老师,关于这个this_=this 这一点有点不懂,打印this时是一个vue,而通过var this_=this 之后,this_打印的是组件?

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

weibo_一路向北都是谎言_03667176

2019-05-16

图片描述

写回答

2回答

Dell

2019-05-17

因为外层的this 是组件,而函数内部的this是 this.bus实例

0
0

六一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 在监听?

0
4
Dell
回复
六一888
bus 是公用的,而this是自己,this只能自己监听,但 bus 被多个地方共用
2019-05-19
共4条回复

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

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

10675 学习 · 8191 问题

查看课程