一、場景
vue中非父子組件之間通信時,使用vuex有時間會很麻煩,這時候可以通過bus總線來實現 消息的訂閱與發布
二、實現方法
1、main.js
//main.js
Vue.prototype.bus = new Vue();
new Vue({
render: h => h(App)
...
}).$mount('#app');
/*
*通過把一個vue實例賦於Vue構造函數原型上的一個屬性bus(當然起任何名稱都是可以的)
*而每個Vue實例都是有$emit和$on方法的
*由於bus屬性在Vue原型上,根據原型鏈查找規則,在頁面中我們就可以通過 this.bus.$emit 和
*this.bus.$on來進行跨組件通信了
*/
2、消息發布
可以在任何組件中
//發布一個事件
this.bus.$emit('even-name',args1, arg2 , ...)
3、消息訂閱
一般可以寫在 created 或 mounted 中
// 消息訂閱
this.bus.$on('event-name', (...args) => {
//接收參數,觸發方法相應的方法等操作
})
