Ember 触发子组件之间的动作

Ember trigger action between child components

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

补充一下,this.sendAction 从 B 到 C 不工作

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

基本模式应该是:

  1. 组件 B 触发对组件 A 的操作。
  2. 组件 A 更改绑定到组件 C 的值。
  3. 现在组件 C 知道操作发生了。

这就是一般的 ember 流程:DDAU(数据向下操作向上)。

如果你想要一些封装,你可以使用上下文组件,将 group 组件 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';
  }
}),