Vue广播事件到多个组件

时间:2017-05-30 11:31:10

标签: vue.js vuejs2

我有一个相当简单的基于组件的问题。

如果我有5个组件并且我在一个组件上单击打开,我怎么能告诉其他4个组件他们需要关闭?

首先我已经把

this.$emit('open');
组件上的

。然后在应用上放了

@open="closeOthers"

然后在应用中,我有以下内容:

'methods':{
  closeOthers : function($event){
    console.log($event);
  }
}

但我只是记录undefined。我怎么能

  1. 使其不记录undefined
  2. 更新所有其他组件上的道具
  3. Full code and demo here >>>

1 个答案:

答案 0 :(得分:1)

第一次 。你应该传递事件抛出函数。喜欢这个

   'toggleSelect' : function(e){
      this.$emit('open', e);
      this.question.open = !this.question.open;
    },

之后。此代码将起作用

'methods':{
  closeOthers : function($event){
    console.log($event);
  }
}

for 2nd 。要控制打开状态,最好将open值移到parent并将其传递给child。 Full code jsfiddle