Backbone中的Underscore功能很奇怪

时间:2014-03-02 20:50:25

标签: javascript ruby-on-rails backbone.js underscore.js

我一直在前端使用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();

它只会销毁其他所有物品。显然我想纠正这个,所以这个功能会破坏所有物品,而不是每一个物品。

有人能告诉我为什么会这样,以及我们可以做些什么来解决它?

1 个答案:

答案 0 :(得分:1)

首先过滤掉你要销毁的物品。

var tobeDeleted = _.filter(data.models, function(item){
          return (item.toJSON().publication_id == id);
        });

......然后销毁

_.invoke(tobeDeleted, "destroy");