一、简介:
先说一下什么是事件总线,其实就是订阅发布者模式;
比如有一个bus对象,这个对象上有两个方法,一个是on(监听,也就是订阅),一个是emit(触发,也就是发布),我们通过on方法去监听某个事件,再用emit去触发这个事件,同时调用on中的回调函数,这样就完成了一次事件触发;
在vue被实例化之后,他就具备了充当事件总线对象的能力,在他上面挂了两个方法,是$emit和$on;
而vue文档说的很明白,$emit会触发当前实例上的事件,附加参数都会传给监听器回调;
二、实现全局事件总线对象
//在mian.js中
Vue.prototype.bus = new Vue() //这样我们就实现了全局的事件总线对象
//组件A中,监听事件
this.bus.$on('updata', function(data) {
console.log(data) //data就是触发updata事件带过来的数据
})
//组件B中,触发事件
this.bus.$emit('updata', data) //data就是触发updata事件要带走的数据