【发布时间】:2014-04-04 09:32:56
【问题描述】:
每当设置active 属性时,我都有以下视图显示选中标记:
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}}
parked 是我要评估的模型的属性。但是,只要模型中的该属性发生更改,视图就不会重新呈现。我尝试添加观察者:
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);
}.observes('active')
});
然后我得到一个错误:
Uncaught TypeError: undefined is not a function
参考线:
return buffer.push(icon);
我猜观察者触发了渲染函数,传递了一个不同于buffer的参数。
那我怎样才能重新渲染视图呢?
【问题讨论】:
标签: ember.js