刷新Backbone ClassName&属性

时间:2014-02-18 15:36:19

标签: javascript jquery backbone.js underscore.js

问题

如何在重新渲染模型更改时更新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')
    }
},

2 个答案:

答案 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();
});