0

そこで、次のように 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/

4

1 に答える 1

1

Handlebars は論理のないテンプレート エンジンであり、コードを実行することはありません。値のみを使用して出力します。

ここisFailedでは、関数であるため、常に true を返す可能性があります。

それを使用するには、Ember 計算プロパティを使用します

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

この方法は、変更isFailedされるたびに自動的に更新されるブール値になりますstate

于 2013-10-18T14:27:04.033 に答える