我一直在前端使用Backbone开发Rails应用程序。它有两个模型,出版物和文章。我在出版物骨干路由器中编写了以下函数,它应该删除指定的出版物及其所有相关文章。它删除了出版物就好了,但在删除文章时我遇到了一个问题。这是代码:
publications_router.js
delete_publication: function(id){
var publication = new SimpleGoogleReader.Models.Publication({id: id});
publication.fetch();
publication.destroy();
var articles = new SimpleGoogleReader.Collections.Articles();
articles.fetch({
success: function(data){
_.each(data.models, function(item){
if (item.toJSON().publication_id == id) {
console.log(item);
}
});
}
});
}
这适用于打印控制台中的每个项目。但是,如果我将console.log(item)行更改为:
item.destroy();
它只会销毁其他所有物品。显然我想纠正这个,所以这个功能会破坏所有物品,而不是每一个物品。
有人能告诉我为什么会这样,以及我们可以做些什么来解决它?
答案 0 :(得分:1)
首先过滤掉你要销毁的物品。
var tobeDeleted = _.filter(data.models, function(item){
return (item.toJSON().publication_id == id);
});
......然后销毁
_.invoke(tobeDeleted, "destroy");