Я только начал использовать backbone.js и добавляю некоторые базовые методы для расширения коллекции, позволяющие мне перебирать коллекцию и сохранять все модели, а также перебирать коллекцию для уничтожения всех моделей. Я понимаю, что массовые обновления не являются RESTful, но я обновляю только локальное хранилище, поэтому не думал, что будет проблемой делать несколько обновлений.
В моем базовом приложении в коллекции 9 моделей. Когда я вызываю collection.saveModels(), он правильно регистрирует длину коллекции и правильно сохраняет все модели.
Когда я вызываю collection.deleteModels(), он правильно регистрирует длину коллекции, но пропускает каждую вторую модель (т.е. 2-ю, 4-ю, 6-ю, 8-ю). Каждый раз, когда нажимается удаление, он продолжает удалять только нечетный индексированный элемент, при этом последним удаляемым элементом является 8-й исходный элемент.
Возможно ли, что я неправильно использую каждую функцию, несмотря на то, что она отлично работает при сохранении?
_.extend(Backbone.Collection.prototype, Backbone.Events, {
saveModels : function() {
console.log(this.length);
this.each(function(model){
console.log('saving model ' + model.get('name'));
model.save();
});
},
deleteModels : function() {
console.log(this.length);
this.each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
}
});
и называются они так: mycollection.saveModels();
и mycollection.deleteModels();
Я понимаю, что могу перебирать коллекцию в зависимости от длины, но я бы предпочел использовать встроенный метод, где это возможно.