Уничтожить все модели в коллекции 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 для уничтожения моделей является плохой практикой, поскольку внутренняя итерация портится из-за постоянного удаления моделей.

Другие вопросы по тегам