在我的Ember应用程序中,我有一个父组件'A',它有两个子组件'B'和& 'C'
我的问题是:
如何触发从组件B到组件C的操作(即2个子组件之间的通信)?
只是要添加,从B到C的this.sendAction
无效
答案 0 :(得分:3)
你不是。就这么简单。然而,还有其他方法可以实现相同的目标。
基本模式应该是:
B
会触发对组件A
的操作。A
更改绑定到组件C
的值。C
知道行动已经发生。这是一般的余烬流: DDAU (数据向下行动)。
如果您想要一些封装,您可以使用上下文组件,将组组件B
和C
放在一起,并为它们提供共享状态。
一个简短的例子:
{{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';
}
}),