Backbone.js 主干js:仅在特定属性更改时渲染?
我知道在主干视图中,您可以像这样绑定到更改事件以重新渲染:Backbone.js 主干js:仅在特定属性更改时渲染?,backbone.js,javascript-events,javascript,Backbone.js,Javascript Events,Javascript,我知道在主干视图中,您可以像这样绑定到更改事件以重新渲染: initialize: function() { this.model.bind('change', this.render, this); }, 但是,是否有一种仅在特定属性更改时渲染的方法?也就是说,指定应该或不应该触发重新提交的属性的白名单(或黑名单) 感谢您的帮助当每个属性发生更改时,主干还会以change:attributeName的形式为它们触发一个更改事件,因此下面是您想要的: initialize: functio
initialize: function() {
this.model.bind('change', this.render, this);
},
但是,是否有一种仅在特定属性更改时渲染的方法?也就是说,指定应该或不应该触发重新提交的属性的白名单(或黑名单)
感谢您的帮助当每个属性发生更改时,主干还会以
change:attributeName
的形式为它们触发一个更改事件,因此下面是您想要的:
initialize: function() {
this.model.bind('change:attributeName', this.render, this);
},
从
更改:[属性](模型、值、选项)-当特定属性已更新时
您只能像这样指定一个属性
change:attributeNmae
例如:
仅当名称更改时才会调用render如果您有属性的白名单,则可以执行以下操作
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);
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);