2014-03-13 1 views
0

У меня есть довольно много атрибутов в моей модели, и при определенных обстоятельствах нужно будет очистить все атрибуты, но 2 или 3. Будет ли это требовать цикла через все атрибуты? Хранение этих 2-3 атрибутов временно, очистка модели, а затем добавление их обратно? Или есть более простой способ снять это?Могу ли я удалить все атрибуты из модели?

Спасибо!

ответ

0

ленивый подход заключается в использовании функции 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']); 
+0

Работает как очарование. Спасибо! –

Смежные вопросы