ленивый подход заключается в использовании функции clear() и повторной добавке конкретных значений.
Если у вас есть (или могут иметь в будущем) события, перечисляемые при внесении изменений, события излишне увольняются.
Посмотрите на ясную функции:
clear: function(options) {
var attrs = {};
for (var key in this.attributes) attrs[key] = void 0;
return this.set(attrs, _.extend({}, options, {unset: true}));
},
Это не трудно, чтобы приспособить это к пользовательской функции очистки():
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']);
Работает как очарование. Спасибо! –