this.each没有正确地遍历集合
this.each not iterating through collection correctly
我刚刚开始使用backbone.js,我正在添加一些基本方法来扩展集合,使我能够遍历集合并保存所有模型,以及遍历集合以销毁所有模型。我意识到批量更新不是RESTful的,但我只是更新到本地存储,所以我不认为进行多次更新会有问题。
在我的基本应用程序中,该集合有9个模型。当我调用collection.saveModels()时,它会正确地记录集合的长度,并正确地保存所有模型。
当我调用collection.deleteModels()时,它会正确地记录集合的长度,但会跳过每一秒的模型(即第2个、第4个、第6个、第8个)。每次按下delete键时,它将继续只删除奇数索引元素,最后一个要删除的项目是第8个原始项目。
我是否可能错误地使用了每个函数,尽管它在我保存时工作得很好?
_.extend(Backbone.Collection.prototype, Backbone.Events, {
saveModels : function() {
console.log(this.length);
this.each(function(model){
console.log('saving model ' + model.get('name'));
model.save();
});
},
deleteModels : function() {
console.log(this.length);
this.each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
}
});
它们被称为:mycollection.saveModels();
和mycollection.deleteModels();
我意识到我可以根据长度迭代集合,但我宁愿尽可能使用内置方法。
bradgonesurfing发布的代码实际上不起作用,因为clone方法没有返回下划线对象。正确的方法是使用_.chain方法,使每个方法都可以链接。
_.chain(App.articles.models).clone().each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
下面的代码对我来说效果很好:
destroyAll: function (options) {
while (this.models.length > 0) {
this.models[0].destroy(options);
}
}
每次调用model.dedestroy()时,它都会从集合中删除自己。each迭代器不知道这一点。做如下操作。
_.chain(App.articles.models).clone().each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
Backbone可以访问undercore.js实用程序。首先克隆模型阵列,然后对其进行迭代,然后销毁每个模型。应该工作
这是我最终使用的kinakuta's
注释的实现。
destroy_models : function() {
for (var i = this.length - 1; i > -1; i -=1){
this.getByCid('c'+i).destroy();
}
}
相关文章:
- 循环遍历以数组为值的Javascript对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 如何遍历包含对象的数组-javascript
- 遍历集合中的数组并在Backbone.js中显示
- MongoDB 遍历文档集合
- 遍历一个通用的 JavaScript 集合
- MongoDB - 不明白如何使用光标遍历集合
- 使用 async.each 异步遍历猫鼬集合
- 使用下划线循环遍历集合
- 循环遍历一个集合并返回一个新集合,其中组合了具有相同id的对象
- 循环遍历Firebase数据库记录的集合
- 主干循环遍历并从嵌套集合中获取值
- 循环遍历集合中的jQuery对象,而不为每次迭代初始化一个新的jQuery对象
- 循环遍历RaphaelJS集合
- this.each没有正确地遍历集合
- Javascript循环遍历对象集合
- Meteor - 返回集合 1 中的所有文档,然后查询集合 2 作为循环遍历集合 1
- 如何在Javascript中遍历Java集合