什么是全局事件总线

一种组件间通信的方式,适用于任意组件间通信

安装全局事件总线

1
2
3
4
5
6
new Vue({
render: h => h(App),
beforeCreate() {
Vue.prototype.$bus = this
}
}).$mount('#app')

使用事件总线

1.接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export default {
name: 'App',
...
methods: {
demo(){
......
}
},
mounted(){
this.$bus.$on('xxx', this.demo)
},
beforeDestroy(){
this.$bus.$off('xxx')
}
}

2.提供数据:this.$bus.$emit(‘xxxx’,数据)

1
this.$bus.$emit('xxx', 数据)

3.最好在beforeDestroy钩子中,用$off去解绑当前组件所用到的事件。

1
2
3
beforeDestroy(){
this.$bus.$off('xxx')
}