[英]Action in handlebars template not firing
我有以下简单的代码:
(JSFiddle) http://jsfiddle.net/aR2UX/3/
无论我做什么,模板中的操作都不会触发。 我怀疑这是由于视图的呈现方式造成的,但无论我阅读什么,我都无法理解它。
我仍在尝试理解 ember 视图,但是从我在小提琴中读到的代码应该可以工作。 不过好像不行,有谁能帮帮我吗?
(这是在 rails 3.2 应用程序中,使用 ember-rails、ember 0.9.4 和把手模板 gem,顺便说一句)。
非常感谢任何帮助,因为我为这个项目承担了一些 ember 风险。
这并没有回答 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>
那么什么都不会发生。 让我困惑了几个小时。
由于车把模板没有名称,它们会在声明时插入到 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
。 因此,您的桌子将在每个tr
周围都有div
。 这是通过更改tagName
解决的: http : //emberjs.com/#toc_36
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.