Backbone.js 销毁主干集合中的所有模型(保留在本地存储中)
如何删除集合中的所有模型(保存在本地存储中) 这些模型是从本地存储中获取的——我希望在客户端和本地存储中销毁这些模型Backbone.js 销毁主干集合中的所有模型(保留在本地存储中),backbone.js,backbone-local-storage,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,
// 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
非常感谢您在这方面的任何帮助 我找到了解决方案:
_.invoke(tasks.toArray(), 'destroy');
显然,使用.each销毁模型是一种不好的做法,因为不断删除模型会使内部迭代变得混乱。如果异步类型的获取中存在完整的代码问题,则会导致错误。要对收集进行迭代,您必须等待获取完成。迭代是在单击按钮时启动的-这是在获取数据时完成的,因此我认为这不是问题。请附加
console.log(模型)
output in a loop?console.log会毫无问题地输出模型-请参阅下面的解决方案。您可以详细说明内部迭代是如何因删除模型而变得混乱的吗?迭代不会考虑突然丢失的元素。因此,上述方法可以工作,或者使用反向运行的for循环