【问题标题】:How would I write a sendAction helper?我将如何编写 sendAction 助手?
【发布时间】:2018-03-08 02:11:14
【问题描述】:

在 ember 中,我们有动作助手;

{{action "actionName" arg1 arg2}}  

但是,当我想向父组件发送操作时,我仍然必须在调用 sendAction 的子组件上显式编写操作。即使我只是冒泡一个动作。我希望使用发送操作助手来避免这种情况;

{{send-action "actionKey" arg1 arg2}}  

有人知道我将如何实现这个助手吗?

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    您应该改用闭包操作,如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

    【讨论】:

    • 我正在尝试完全模仿您的模式,但我不断收到错误消息; &lt;frontend@component:my-component::ember4889&gt; had no action handler for: 'actionKey'
    • 等等,我的错误在其他地方,我认为这是正确的答案。解决方法是使用myName 而不是"myName" 所以,如果你不介意后续问题,我将如何在控制器(而不是模板)中实例化一个闭包动作,这样我就可以传递对它的引用大约。这可能吗?
    • 问路!转给谁?我上面展示的模板语法是将闭包动作传递给组件的方式。
    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多