销毁Backbone集合中的所有模型(持久存储在本地存储中)

时间:2014-10-05 22:22:27

标签: backbone.js backbone-local-storage

如何删除集合中的所有模型(保留在本地存储中)?

模型是从本地存储中获取的 - 我希望模型在客户端和本地存储中都被销毁。

// 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 个答案:

答案 0 :(得分:1)

我找到了解决方案:

_.invoke(tasks.toArray(), 'destroy');

显然,使用.each来销毁模型是一种不好的做法,因为内部迭代会因连续删除模型而搞砸。