所以我在HomeView中添加了一个方法:
App.HomeView = Ember.View.extend({
isFailed: function () {
console.log(this);
return "FAILED" === this.get("state");
}
});
在HTML中,这是主页模板的外观。正如您所看到的,我在循环中调用isFailed函数,由于某种原因,它永远不会被调用(日志中没有任何内容):
<script type="text/x-handlebars" id="home">
<table>
<thead>
<tr>
<th>ID</th>
<th>Status</th>
<th>Foo</th>
<th>Bar</th>
</tr>
</thead>
<tbody>
{{#each}}
<tr>
<td>{{id}}</td>
<td>
{{#if isFailed }}
FAILED
{{/if}}
</td>
<td>bar</td>
<td>foobar</td>
</tr>
{{/each}}
</tbody>
</table>
</script>
知道为什么没有调用isFailed函数吗?
jsfiddle:http://jsfiddle.net/dWxTn/2/
答案 0 :(得分:1)
Handlebars是一个无逻辑的模板引擎,它永远不会执行代码。它只使用值并打印出来。
有可能isFailed
总是会返回真实,因为它是一个函数。
要使用它,请使用Ember computed property
isFailed: function () {
console.log(this);
return "FAILED" === this.get("state");
}.property("state")
这样isFailed
每次state
更改时都会自动更新布尔值