Ember JS:我如何使用可组合帮助器练习“Data Down,Actions Up”?

时间:2018-05-07 21:23:31

标签: ember.js

通过可组合帮助器实现“数据向下,动作向上”的新功能。这可能吗?这就是我想要做的事情:

//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')();
   }
}

但是当我点击它时,根本没有任何事情发生。 :(如何从我的组件模板中调用我的父操作?

1 个答案:

答案 0 :(得分:5)

将子组件模板更改为以下内容:

<div {{action toggleToppings}}>

当你使用引号时,你会告诉把手在当前上下文的动作哈希上查找该名称的动作(并且如果找不到则动作起泡)。但是,当您将一个动作(一个动作实际上只是一个绑定函数)从父级传递到此组件中时,您不会将其添加到动作哈希中,您只需将其作为属性添加到组件中#39; s context。

至于为什么后面的第二次尝试不适合你,我怀疑它确实有效,但是动作处理程序还有一些其他不相关的问题。将调试器添加到&#34;切换&#34;帮助者会告诉你是否以及何时被调用。