一 . 第一种: main.js创建----挂载原型
1. //main.js
Vue.prototype.$bus = new Vue();
2.子组件(需要发出消息的组件)
this.$bus.$emit("aaa")
3.父组件(需要接收消息的组件)
this.$bus.$on("aaa",()=>{
this.$refs.scroll.scroll.refresh()
})
...
beforeDestroy() {
this.$eventBus.$off('newProject')
this.$eventBus.$off('changePsd')
Bus.$off('newProject')
}
二.第二种: ----新实例
//1. src/plugins/bus.js
import Vue from 'vue';
export default new Vue();
2.子组件(需要发出消息的组件)
import Bus from '../plugins/bus'
//使用:
Bus.$emit('newProject')
//3.父组件接收
import Bus from '../plugins/bus'
Bus.$on('newProject', (val) => {
this.type = val ? 'edit' : 'add'
this.injectData = val || {}
if (!this.$refs.newProject.visible)
this.$refs.newProject.visible = true
})
...
beforeDestroy() {
this.$eventBus.$off('newProject')
this.$eventBus.$off('changePsd')
Bus.$off('newProject')
}
所有总线传值事件都需要在父组件销毁时对总线事件销毁!!!
beforeDestroy() {
this.$eventBus.$off('newProject')
this.$eventBus.$off('changePsd')
Bus.$off('newProject')
}