djl*_*ley 2 javascript arrays local-storage backbone.js
我刚刚开始使用backbone.js,我正在添加一些基本方法来扩展一个集合,允许我遍历一个集合并保存所有模型,并迭代一个集合来销毁所有模型.我意识到批量更新不是RESTful,但我只是更新到本地存储,所以不认为进行多次更新会是一个问题.
在我的基础应用程序中,该集合有9个模型.当我调用collection.saveModels()时,它会正确记录集合的长度,并正确保存所有模型.
当我调用collection.deleteModels()时,它会正确记录集合的长度,但会跳过每秒模型(即第2,第4,第6,第8).每次按下删除时,它继续只删除奇数索引元素,最后一个要删除的项目是第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();
});
}
});
Run Code Online (Sandbox Code Playgroud)
他们被这样称呼:mycollection.saveModels();和mycollection.deleteModels();
我意识到我可以根据长度迭代集合,但我宁愿在可能的情况下使用内置方法.
发布的bradgonesurfing代码实际上并不起作用,因为clone方法不返回下划线对象.正确的方法是使用_.chain方法使每个方法可链接.
_.chain(App.articles.models).clone().each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
Run Code Online (Sandbox Code Playgroud)
每次调用model.destroy()时,它都会从集合中删除.每个迭代器都不知道这个.做类似以下的事情.
_.chain(App.articles.models).clone().each(function(model){
console.log('deleting model ' + model.get('name'));
model.destroy();
});
Run Code Online (Sandbox Code Playgroud)
Backbone可以访问underscore.js工具.首先克隆模型数组然后迭代它然后销毁每个模型.应该管用
小智 5
下面的代码对我很有用:
destroyAll: function (options) {
while (this.models.length > 0) {
this.models[0].destroy(options);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5879 次 |
| 最近记录: |