子组件之间的Ember触发操作

时间:2018-03-21 10:52:37

标签: javascript jquery ember.js

在我的Ember应用程序中,我有一个父组件'A',它有两个子组件'B'和& 'C'
我的问题是:
如何触发从组件B到组件C的操作(即2个子组件之间的通信)?

只是要添加,从B到C的this.sendAction无效

1 个答案:

答案 0 :(得分:3)

你不是。就这么简单。然而,还有其他方法可以实现相同的目标。

基本模式应该是:

  1. 组件B会触发对组件A的操作。
  2. 组件A更改绑定到组件C的值。
  3. 现在组件C知道行动已经发生。
  4. 这是一般的余烬流: DDAU (数据向下行动)。

    如果您想要一些封装,您可以使用上下文组件,将组件BC放在一起,并为它们提供共享状态。

    一个简短的例子:

    {{component-b onsomething=(action 'myAction')}}
    {{component-c state=state}}
    

    现在在component-b内你可以get(this, 'myAction')('newState')。在组件A(父级)中,您拥有操作myAction

    myAction(newState) {
      set(this, 'state', newState);
    }
    

    component-c内,您可以使用计算属性根据状态计算某些内容:

    shouldDisplaySomeButton: computed('state', {
      get() {
        return get(this, 'state') === 'newState';
      }
    }),