如何在重新渲染模型更改时更新Backbone el?
我目前有一个事件监听器,听取这样的模型更改。
this.listenTo(this.model, 'change', this.render);
然后,这将正确地重新渲染视图,但className&属性未更新以反映模型更改,它们看起来像这样。
className: function()
{
var childClassName = ( null === this.model.get('parent_id') ? '' : ' list-item-child' ),
parentClassName = ( false == this.model.get('parent') ? '' : ' list-item-parent');
return 'list-item' + childClassName + parentClassName;
},
attributes: function()
{
return {
'data-id': this.model.get('id'),
'data-parent': this.model.get('parent_id')
}
},
答案 0 :(得分:2)
您必须更新自己,例如:
onRender: function(){
this.$el.removeClass().addClass(this.className());
}
答案 1 :(得分:1)
className
在视图创建时设置,当您重新渲染视图时,它不会被更新。
如果您没有其他解决方案,也许此解决方案可以为您提供帮助:
this.listenTo(this.model, 'change', function() {
this._ensureElement();
this.render();
this.delegateEvents();
});