我有以下简单的代码:
(JSFiddle)http://jsfiddle.net/aR2UX/3/
无论我做什么,模板中的操作都不会触发。我很怀疑这是由于视图呈现的方式,但无论我读什么,我都无法绕过它。
我仍在尝试理解余烬视图,但从我读过的内容中我的代码应该可以工作。但似乎没有人可以帮助我吗?
(这是在rails 3.2 app中,使用ember-rails,ember 0.9.4和把手模板gem,btw)。
我非常感谢任何帮助,因为我为这个项目带来了一点ember风险。
答案 0 :(得分:9)
这不符合OP的原始问题,但它符合标题,如果您遇到此问题,则搜索引擎会指向此页面。以下是可能无法触发操作的一个可能原因:标记可能不在Ember应用程序的rootElement中。所以如果你有JS
FooApp = Ember.Application.create({
rootElement:"#foo",
test: function() {
alert("testing");
}
});
和把手
<div id="foo"></div>
<a {{action "test" target="FooApp"}}>Fail</a>
然后什么都不会发生。让我困惑了几个小时。
答案 1 :(得分:3)
由于把手模板没有名称,因此它们会在声明它们的位置插入到DOM中 - 这就是您看到任何内容的原因。
此:
{{#each content}}
{{view Skills.RecommendedSkillView skillBinding="this"}}
{{/each}}
由于此时未定义content
且手柄模板未与视图相关联,因此不会为您做任何事情。
同样地:
Skills.RecommendedSkillsListView = Ember.View.extend({
templateName: 'app/templates/recommended_skills_list',
由于templateName
指向不存在的手柄模板,并且视图类从未实例化(否则您将收到缺少模板的警告),因此无法帮助您。
此外:
<td><a href="#" {{action "a"}}>DO A THING</a></td>
不会再调用函数a
,因为此模板只会在遇到它的DOM中插入一次,并且在该上下文中未定义a
(skill
也不是)。
最后,当您确实按照预期的方式使代码更接近工作时,默认情况下,每个手柄模板都会包含在div
中。因此,每个div
左右,您的表格会tr
。通过更改tagName
:http://emberjs.com/#toc_36