全局事件总线是一种组件间的通信方式:适用于任意组件间的通信
安装全局事件总线:
new Vue({
el: '#app',
render: h => h(App),
beforeCreate(){//带数据代理没有完成
Vue.prototype.$bus=this//安装全局事件总线,$bus就是当前的vm实例
}
});
使用事件总线
接收数据:A组件想要接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。
mounted() {
this.$bus.$on('自定义事件名称',(data)=>{
console.log('A组件,收到了数据:',data)
})
},
提供数据:
this.$bus.$emit('自定义事件名称',数据)
最好在beforeDestroy的钩子中,使用$off去解绑当前组件所用到的事件
this.$bus.$off('自定义事件名');//销毁