Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干js:仅在特定属性更改时渲染?_Backbone.js_Javascript Events_Javascript - Fatal编程技术网

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);