簡體   English   中英

Backbone js:只在特定屬性發生變化時才渲染?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM