通过可组合帮助器实现“数据向下,动作向上”的新功能。这可能吗?这就是我想要做的事情:
//parent template
{{pizza-toppings toggleToppings=(action (toggle 'toppings' this 'mushrooms' 'anchovies'))}}
//child component template
<div {{action "toggleToppings"}}>
但是我得到了一个'没有动作处理程序:toggleToppings'错误。
然后我尝试对孩子采取行动,如下:
//child component template
<div {{action "togglePizza"}}>
//child component JS
actions: {
togglePizza() {
this.get('toggleToppings')();
}
}
但是当我点击它时,根本没有任何事情发生。 :(如何从我的组件模板中调用我的父操作?
答案 0 :(得分:5)
将子组件模板更改为以下内容:
<div {{action toggleToppings}}>
当你使用引号时,你会告诉把手在当前上下文的动作哈希上查找该名称的动作(并且如果找不到则动作起泡)。但是,当您将一个动作(一个动作实际上只是一个绑定函数)从父级传递到此组件中时,您不会将其添加到动作哈希中,您只需将其作为属性添加到组件中#39; s context。
至于为什么后面的第二次尝试不适合你,我怀疑它确实有效,但是动作处理程序还有一些其他不相关的问题。将调试器添加到&#34;切换&#34;帮助者会告诉你是否以及何时被调用。