Уничтожить все модели в коллекции Backbone (сохраняется в локальном хранилище)
Как удалить все модели из моей коллекции (сохраненные в локальном хранилище)?
Модели извлекаются из локального хранилища - я хочу, чтобы модели уничтожались как на клиенте, так и в локальном хранилище.
// Model + Collection
App.Models.Task = Backbone.Model.extend({
defaults: {
text: 'N/A'
}
});
App.Collections.Tasks = Backbone.Collection.extend({
model: App.Models.Task,
localStorage: new Backbone.LocalStorage("task")
});
// Create collection and fetch tasks
var tasks = new App.Collections.Tasks();
tasks.fetch(); // collection is now populated with 4 tasks
// Delete all models (both at client and local storage)
tasks.each(function(model) {
model.destroy();
})
Запустив это, я уничтожаю только некоторые модели - эта ошибка возникает и предотвращает уничтожение остальных:
Uncaught TypeError: Cannot read property 'destroy' of undefined
Любая помощь в этом очень ценится!
1 ответ
Решение
Я нашел решение:
_.invoke(tasks.toArray(), 'destroy');
По-видимому, использование.each для уничтожения моделей является плохой практикой, поскольку внутренняя итерация портится из-за постоянного удаления моделей.