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>