我能从模型中清除除特定属性之外的所有属性吗?

时间:2014-03-13 19:56:20

标签: javascript backbone.js

我的模型中有很多属性,在某些情况下需要清除除2或3之外的所有属性。这是否需要循环遍历所有属性?暂时存储这2-3个属性,清除模型,然后重新添加它们?或者有更简单的方法来解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

惰性方法是使用clear()函数并重新添加特定值。

如果您已经(或将来可能会有)更改事件列表,则会不必要地触发事件。

看一下clear函数:

clear: function(options) {
  var attrs = {};
  for (var key in this.attributes) attrs[key] = void 0;
  return this.set(attrs, _.extend({}, options, {unset: true}));
},

要使其适应自定义clear()函数并不难:

var myModel = Backbone.Model.extend({
  // You may also override the Backbone clear function
  partialClear: function(options, keep) {
    var attrs = {};
    for (var key in this.attributes) 
      if (!_.contains(keep, key)) attrs[key] = void 0;
    return this.set(attrs, _.extend({}, options, {unset: true}));
  },
});

然后使用要保留的值数组运行partialClear:

this.partialClear({}, ['id', 'a', 'b']);