Vue事件匯流排(EventBus)

2022-03-06 01:42:38 字數 1073 閱讀 6360

參考:

問題背景:vue中除父子元件通訊外,任意兩個元件間的通訊問題。

解決方案:1.使用vuex,共享乙個狀態,通過修改和監聽這個狀態實現元件通訊。

2.事件匯流排。

思路:根據vue.js文件,vm.$on、vm.$off都是其實例方法,因此我們需要乙個vue例項作為事件匯流排物件。

使用方式:

第一種:將事件匯流排物件繫結在應用根示例的data屬性上

① 事件匯流排的繫結

new

vue(,

data:

});

② 事件匯流排的使用

adddraguploadlistener () )

},adduploadfinishlistener () )

},removeuploadfinishlistener () ,

第二種:將事件匯流排物件繫結到vue原型上

① 繫結

//

main.js

vue.prototype.$eventbus = new vue()

var eventbus = new

vue();

object.defineproperties(vue.prototype,

}

② 使用

this.$bus.$emit('nameofevent', );

this.$bus.$on('nameofevent',($event) =>)

第三種:定義事件匯流排,只在需要的元件中引入

注意點:此方式引用,需要在元件銷毀時移除繫結的監聽事件

① 新建立乙個 .js 檔案,比如event-bus.js

//

event-bus.js

import vue from 'vue'export const eventbus = new vue()

② 使用

-

綜上,以上三種方式均可實現需求,個人傾向於前兩種。

vue 事件匯流排 eventBus

父元件向子元件傳遞引數用v bind 子元件向父元件傳遞引數用this.emit 兄弟元件傳參eventbus或者是用vuex進行傳遞 下邊說說eventbus 首先在src的assets的目錄下新建乙個vue bus.js檔案 import vue from vue export default ...

事件匯流排 EventBus

在非父子元件需要進行通訊的時候,除了vuex之外,還有就是事件匯流排了 eventbus 又稱為事件匯流排。在vue中可以使用 eventbus 來作為溝通橋梁的概念,就像是所有元件共用相同的事件中心,可以向該中心註冊傳送事件或接收事件,所以元件都可以上下平行地通知其他元件,但也就是太方便所以若使用...

EventBus 發布 訂閱事件匯流排

eventbus是一款針對android優化的發布 訂閱事件匯流排。執行緒之間傳遞訊息 1.開銷小,幾行 就可以實現。2.傳送者和接收者解耦。示例 1.先自定義乙個訊息傳輸類 public class msgtype 2.使用時進行註冊 eventbus.register this 3.傳送需要傳輸...