Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬JS:我如何练习';数据下降,行动上升';有组合助手吗?_Ember.js - Fatal编程技术网

Ember.js 余烬JS:我如何练习';数据下降,行动上升';有组合助手吗?

Ember.js 余烬JS:我如何练习';数据下降,行动上升';有组合助手吗?,ember.js,Ember.js,ember新手,使用可组合助手练习“数据下降,动作上升”。这可能吗?这就是我试图做的: //parent template {{pizza-toppings toggleToppings=(action (toggle 'toppings' this 'mushrooms' 'anchovies'))}} //child component template <div {{action "toggleToppings"}}> //父模板 {{pizza toppings togg

ember新手,使用可组合助手练习“数据下降,动作上升”。这可能吗?这就是我试图做的:

//parent template
{{pizza-toppings toggleToppings=(action (toggle 'toppings' this 'mushrooms' 'anchovies'))}}

//child component template
<div {{action "toggleToppings"}}>
//父模板
{{pizza toppings toggleToppings=(操作(切换“toppings”这个“蘑菇”“凤尾鱼”)}
//子组件模板
但我得到了一个“无操作处理程序:toggleToppings”错误

然后我试着对孩子采取行动,就像这样:

//child component template 
<div {{action "togglePizza"}}>

//child component JS
actions: {
   togglePizza() {
          this.get('toggleToppings')();
   }
}
//子组件模板
//子组件JS
行动:{
切换披萨(){
这个.get('toggleToppings')();
}
}

但当我点击它时,什么也没发生(如何从组件模板中调用父操作?

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

<div {{action toggleToppings}}>

当您使用引号时,您告诉Handlebar在当前上下文的actions散列中按该名称查找操作(如果找不到,则将该操作冒泡起来)。但是,当您传递操作时(操作实际上只是一个绑定函数)从父级添加到此组件中,您没有将其添加到操作哈希,而是将其作为组件上下文中的属性添加


至于为什么第二次尝试对您不起作用,我怀疑它确实起作用,但操作处理程序还有其他一些不相关的问题helper会让你知道它是否被调用以及何时被调用。

你在子组件js中的代码看起来还可以,问题是你的
开关是否可以改为在父js文件中定义它?是的,我肯定可以!超级新手问题:你能在父js文件中定义可组合操作吗?或者我应该使用常规操作吗广告?你说的可组合操作是什么意思?啊,我明白你现在在做什么了,让我们把代码放在js文件中,看看它是如何运行的,可组合与否应该不重要。我想他需要在CSS中为
div
标记添加
光标:指针;
。看。就是这样!谢谢你的明确解释。顺便说一句,我不需要使用'c'乌索:指针“如下所示,但下次遇到这个问题时,我会记住这个窍门。”