我有一个表单,并且我在每个字段上执行foreach并将字段传递给它们自己的组件。我想触发一个传播到从字段组件触发的所有兄弟字段的事件。
我知道我可以从字段组件中执行此操作 this.dispatch('activeField',this.field);
然后形成Form组件 this.broadcast('activeField',this.field);
似乎应该有一种方法可以做到这一点,而不会涉及父母的开销。我使用的是Vue 1.0,这个例子只是为了演示我遇到的问题。 这是sudo代码所以很可能是拼写错误。
答案 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)
});