EmberJS - 添加查看和调用方法

时间:2013-10-18 13:57:05

标签: ember.js handlebars.js

所以我在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/

1 个答案:

答案 0 :(得分:1)

Handlebars是一个无逻辑的模板引擎,它永远不会执行代码。它只使用值并打印出来。

有可能isFailed总是会返回真实,因为它是一个函数。

要使用它,请使用Ember computed property

isFailed: function () {
    console.log(this);
    return "FAILED" === this.get("state");
}.property("state")

这样isFailed每次state更改时都会自动更新布尔值