[英]Backbone js: Only render when specific attributes have changed?
我知道在骨干視圖中你可以綁定到change事件來重新渲染,如下所示:
initialize: function() {
this.model.bind('change', this.render, this);
},
但是有沒有辦法只在特定屬性發生變化時進行渲染? 即指定應該或不應該觸發重新渲染的屬性的白名單(或黑名單)?
謝謝你的幫助
Backbone還會在更改時觸發每個屬性的更改事件,格式為change:attributeName
,因此以下是您想要的:
initialize: function() {
this.model.bind('change:attributeName', this.render, this);
},
來自文檔:
“更改:[屬性]”(模型,值,選項) - 更新特定屬性時。
您只能指定一個這樣的屬性
change:attributeNmae
例:
this.model.bind('change:name', this.render, this);
只有在名稱更改時才會調用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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.