Ember 触发子组件之间的动作
Ember trigger action between child components
在我的 Ember 应用程序中,我有一个父组件 'A',它有两个子组件 'B' 和 'C'
我的问题是:
如何触发从组件 B 到组件 C 的操作(即 2 个子组件之间的通信)?
补充一下,this.sendAction
从 B 到 C 不工作
你不知道。就这么简单。然而,还有其他方法可以实现相同的目标。
基本模式应该是:
- 组件
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';
}
}),
在我的 Ember 应用程序中,我有一个父组件 'A',它有两个子组件 'B' 和 'C'
我的问题是:
如何触发从组件 B 到组件 C 的操作(即 2 个子组件之间的通信)?
补充一下,this.sendAction
从 B 到 C 不工作
你不知道。就这么简单。然而,还有其他方法可以实现相同的目标。
基本模式应该是:
- 组件
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';
}
}),