vue中的eventBus

在vue2中,父子組件傳遞數據,父組件能夠直接傳遞數據進子組件,而子組件經過調用父組件傳遞進來的方法,將本身的數據傳遞回去。javascript

那兄弟組件之間,或者是兄弟組件的子組件之間如何傳遞呢?vue

固然vuex是一種解決方案,那若是僅僅使用vue怎麼辦?一層層傳遞麼?java

這裏簡單說下vue2裏面的eventBusjquery

一個完整的eventBus主要分爲三個部分:eventBus組件、註冊事件($on)、發送事件($emit)vuex

 

eventBus組件函數

import Vue from 'Vue';
export default new Vue;

建立一個空的vue組件用來傳遞數據spa

 

註冊事件blog

import EventBus from './eventBus';
EventBus.$on('eventname',(value) => { //value do someth });

 

發送事件事件

import EventBus from './eventBus';
EventBus.$emit('eventname', value);

 

從代碼上能夠清晰看到,咱們只須要在使用的地方,引入eventBus組件,而後註冊好$on事件便可。ip

發送事件$emit觸發後,EventBus會自行找到註冊過的同名的$on事件,接下來就是如同jquery點擊事件通常的函數觸發了~

PS:

EventBus能夠嵌套哦~

相關文章
相關標籤/搜索