【发布时间】:2018-03-08 02:11:14
【问题描述】:
在 ember 中,我们有动作助手;
{{action "actionName" arg1 arg2}}
但是,当我想向父组件发送操作时,我仍然必须在调用 sendAction 的子组件上显式编写操作。即使我只是冒泡一个动作。我希望使用发送操作助手来避免这种情况;
{{send-action "actionKey" arg1 arg2}}
有人知道我将如何实现这个助手吗?
【问题讨论】:
在 ember 中,我们有动作助手;
{{action "actionName" arg1 arg2}}
但是,当我想向父组件发送操作时,我仍然必须在调用 sendAction 的子组件上显式编写操作。即使我只是冒泡一个动作。我希望使用发送操作助手来避免这种情况;
{{send-action "actionKey" arg1 arg2}}
有人知道我将如何实现这个助手吗?
【问题讨论】:
您应该改用闭包操作,如Triggering Changes with Actions 所示。
因此,如果您在名为 actionKey 的父组件中有操作,请执行以下操作。
将其作为闭包动作传递给子组件:
{{my-component myName=(action 'actionKey')}}
然后在你的子组件的模板中:
<button {{action myName arg1 arg2}}>click me</button>
我使用myName 进行说明,它可以是任何你想要的,只要它与你在组件中使用的名称相匹配。
我在 Twiddle 中复制了上述内容:https://ember-twiddle.com/fd56b0b9d017968fc334b3f109760806。
【讨论】:
<frontend@component:my-component::ember4889> had no action handler for: 'actionKey'
myName 而不是"myName" 所以,如果你不介意后续问题,我将如何在控制器(而不是模板)中实例化一个闭包动作,这样我就可以传递对它的引用大约。这可能吗?