触发兄弟姐妹Vuejs上的事件

时间:2017-07-07 16:52:38

标签: events javascript-events vue.js

我有一个表单,并且我在每个字段上执行foreach并将字段传递给它们自己的组件。我想触发一个传播到从字段组件触发的所有兄弟字段的事件。

我知道我可以从字段组件中执行此操作 this.dispatch('activeField',this.field);

然后形成Form组件 this.broadcast('activeField',this.field);

似乎应该有一种方法可以做到这一点,而不会涉及父母的开销。我使用的是Vue 1.0,这个例子只是为了演示我遇到的问题。 这是sudo代码所以很可能是拼写错误。

1 个答案:

答案 0 :(得分: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)
});