Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 销毁主干集合中的所有模型(保留在本地存储中)_Backbone.js_Backbone Local Storage - Fatal编程技术网

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循环