2017-07-07 184 views
1

我有一個表單,從那裏我做一個foreach每個領域,並將字段傳遞到他們自己的組件。我想觸發一個事件,該事件傳播到由一個字段組件觸發的所有同級字段。在兄弟姐妹觸發事件Vuejs

我知道我可以從字段組件 this.dispatch('activeField',this.field);

然後形成窗體組件 this.broadcast('activeField',this.field);

似乎應該有這樣做的方式,而不涉及父母的開銷。我使用Vue 1.0,這個例子只是爲了演示我遇到的一個問題。 這是sudo代碼,所以很可能會出現拼寫錯誤。

+1

涉及父。兄弟姐妹不應該彼此瞭解。 –

回答

3

「成熟」的方法是使用Vuex或其他共享狀態通量提供者。但是,這不是絕對必要的。

您還可以使用獨立的Vue實例作爲事件總線,以從現場組件發出消息並在窗體組件中接收消息。

eventBusWrapper.js

import Vue from 'vue' 

const EventBus = new Vue() 
export default { 
    EventBus 
} 

字段組件

import EventBus from './eventBusWrapper' 
EventBus.$emit('activeField', this.field) 

形成組分

import EventBus from './eventBusWrapper' 
EventBus.$on('activeField', (field) => { 
    console.log(field) 
}); 
+0

這很聰明,但我的領導會有一頭母牛。謝謝你的提示。 –

+0

@ShawnPivonka高興地幫助,但我真的不明白你的主角的異議。他們關心什麼? –

+0

這與代碼庫的其餘部分不一致。 –