全局事件总线
GlobalEventBus
: 一种组件间通信的方式, 适用于任意组件间通信
安装全局事件总线
- 代码示例
js
// main.js
new Vue({
...
beforeCreate() {
Vue.prototype.$bus = this // 安装全局事件总线, $bus 就是当前应用的 vm
}
...
})
使用事件总线
- 接收数据:
A
组件想接收数据, 则在A
组件中给$bus
绑定自定义事件, 事件的回调在A
组件中
js
mounted() {
this.$bus.$on('xxx', (data) => { ... })
}
- 提供数据
js
methods: {
doSomething() {
this.$bus.$emit('xxx', 数据)
}
}
- 图示
全局事件总线注意项
- 在
beforeDestroy
钩子函数中用$off
去解绑当前组件所用到的事件:
js
beforeDestroy() {
this.$bus.$off('xxx')
}