Ember.js 属性更改时重新渲染视图

Ember.js 属性更改时重新渲染视图,ember.js,Ember.js,无论何时设置活动属性,我都可以通过以下视图显示选中标记: App.ActiveEntryView = Ember.View.extend({ render: function(buffer) { var active = this.get('active'), icon; if (active) { icon = 'fa fa-check'; } else { icon = '';

无论何时设置
活动
属性,我都可以通过以下视图显示选中标记:

App.ActiveEntryView = Ember.View.extend({

    render: function(buffer) {
        var active = this.get('active'), icon;
        if (active) {
            icon = 'fa fa-check';
        } else {
            icon = '';
        }
        return buffer.push(icon);
    }

});
但如果
active
属性发生更改,则不会重新渲染。这在我的模板中绑定如下:

{{#each model}}
    <tr class="odd-even">
        ....
        <td>{{view App.ActiveEntryView activeBinding="parked"}}</td>
        ....
    </tr>
{{/each}}
但是我得到了一个错误:

Uncaught TypeError: undefined is not a function
关于这一行:

        return buffer.push(icon);
我猜观测者会触发渲染函数,并传递一个不同于
缓冲区
的参数


如何重新渲染视图?

我对视图知之甚少,但据我所知,这不是重新渲染的方法。具体来说,
render
是系统在需要呈现模板时调用的钩子。自己调用钩子不会迫使系统重新呈现模板,这必须在更高的级别上完成

尽管如此,可能有一种方法可以强制重新渲染整个视图,但对于大多数问题来说,这似乎不是一个好的解决方案。我看到你在用图标做一些事情,所以我将在不知道你整个问题的情况下尝试一个解决方案。如果你发布更多细节,我可能会帮你更多

据我所知,当
active
属性更改时,您似乎试图更改视图中某个元素的图标。以下是您可以如何做到这一点:

在视图模板中:

<i {{bind-attr class='view.active:fa view.active:fa-check'}}></i>

您可以看到有关绑定类名的更多详细信息

<i {{bind-attr class='view.active:fa view.active:fa-check'}}></i>