【发布时间】:2018-03-21 10:52:37
【问题描述】:
在我的 Ember 应用程序中,我有一个父组件“A”,它有两个子组件“B”和“C”
我的问题是:
如何触发从组件 B 到组件 C 的操作(即两个子组件之间的通信)?
补充一句,this.sendAction 从 B 到 C 不起作用
【问题讨论】:
标签: javascript jquery ember.js
在我的 Ember 应用程序中,我有一个父组件“A”,它有两个子组件“B”和“C”
我的问题是:
如何触发从组件 B 到组件 C 的操作(即两个子组件之间的通信)?
补充一句,this.sendAction 从 B 到 C 不起作用
【问题讨论】:
标签: javascript jquery ember.js
你没有。就是这么简单。但是,还有其他方法可以实现相同的目标。
基本模式应该是:
B 触发对组件A 的操作。A 更改绑定到组件C 的值。C 知道该操作已发生。这是一般的 ember 流程:DDAU(数据向下动作向上)。
如果你想要一些封装,你可以使用上下文组件,group 组件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';
}
}),
【讨论】: