我知道在骨干视图中你可以绑定到change事件来重新渲染:
initialize: function() {
this.model.bind('change', this.render, this);
},
但是有一种方法只能在特定属性发生变化时进行渲染吗?即指定应该或不应该触发重新呈现的属性的白名单(或黑名单)?
感谢您的帮助
答案 0 :(得分:1)
Backbone还会以change:attributeName
的形式触发每个属性更改时的更改事件,因此以下是您想要的内容:
initialize: function() {
this.model.bind('change:attributeName', this.render, this);
},
“更改:[属性]”(模型,值,选项) - 更新特定属性时。
答案 1 :(得分:1)
您只能指定一个这样的属性
change:attributeNmae
示例:的
this.model.bind('change:name', this.render, this);
只有在名称更改时才会调用渲染
答案 2 :(得分:1)
如果您有属性白名单,则可以执行以下操作
var whitelist = ['att1', 'attr2'];
this.model('change', function(model){
var hasChanged = function(attr) { //check if attr has changed
return model.hasChanged(attr);
};
if(whitelist.some(hasChanged)) { //some attr has changed
this.render();
}
}, this);