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