学习笔记
全局事件总线就是为了实现各个组件的自由通信,传递数据
原理是假设有组件A和组件B,A和B之间关系可以是兄弟,父子,爷孙任意关系。然后A和B之间有一个中间商C,然后A可以在自身给C设置一个自定义事件,以及回调函数,然后假如B要给A传数据,就可以通过这个自定义事件去启动它,再后面传入数据作为参数。因此事件触发后运行回调函数,因为回调函数在A自身上,所所以A就得到了数据。
C正规名字叫$bus
条件1:中间商C是要A和B以及后续所有组件实例对象都能访问到的,因此可以将C设置在Vue.prototype.$bus(因为:vueComponent.prototype._proto_ === Vue.prototype)所以只要设置在上面后,所有的vc实例都可以访问到C
条件2:可以调用到$on、$off、$emit。这些是Vue实例和VC实例上的,因此$bus是要作为一个Vue实例或者VC实例,建议Vue实例,因为可以在main.js文档里唯一的Vue实例上的beforeCreate上直接添加Vue.prototype.$bus=this。这样就可以实现通信了
在beforeDestroy里最好解绑当前组件的用到的事件