Backbone.js删除模型

时间:2015-04-30 10:17:26

标签: javascript backbone.js

我一直在努力工作几个小时,没有运气。如果你能在图像上看到,我的模型有点复杂。图片来自调试中的Chrome。

我需要从集合中删除一个模型,同时我需要能够更改骨干将用于删除其ajax的URL。所以从本质上讲,这是我的模型结构:

butts

如何删除id为123123的bookmarkedArticles中的模型?

我试过这个:

attributes:
   favorites {
       bookmarkedArticles: [{id: 123123},{id: ...}],
       bookedmarkedSearches: [{}],
       dispatchesMailds: []
    }

也是这个

 var model = new metaModel(
              {
                  favourites: {
                      bookmarkedArticles: {
                          id: "123123"
                      }

                  }
              }
          );
model.destroy();

根本没有成功。

Model image from Chrome Debug

1 个答案:

答案 0 :(得分:1)

所提供的信息并未提供大量细节,但我会尝试回答两种情况:

选项A: 您正在尝试删除已加入书签的集合中的模型Article.id =" 123123"。如果是这种情况并考虑到bookmarkedArticles它只是一个对象数组,我建议使用下划线方法filter过滤集合,然后删除过滤器返回的模型。

var id = 123123;
var modelsToDelete = aamodel.headerData.collection.filter(function(model){
   // find in the bookmarked articles
   return _.find(model.get('bookmarkedArticles'), function(ba){
        return (ba.id === id);
   });
});
_.each(modelsToDelete, function(model){
  model.destroy();
});

选项2:如果您要删除已添加书签的文章' 123123'仅使用' destroy'与您的主模型相关联方法,第一,你必须转换' bookmarkedArticles'到Backbone.Collection,因为它只是一个对象数组,Backbone的一些实用程序允许您轻松地执行此操作:

https://github.com/blittle/backbone-nested-models

但是默认情况下这是不可能的,那么,如果你想要删除标记的文章'你可以创建Backbone.Model然后使用方法destroy。例如:

var BookmarkedArticle = Backbone.Model.extend({
  url: function(){ 
   return '/bookmarkArticle/' + this.id;
  }
});

new BookmarkedArticle({"id": "123123","master": "5",...}).destroy();

希望这些信息有用,并提供一些指导来解决您的问题。