javascript - Backbone.js 删除模型

标签 javascript backbone.js

我已经尝试了几个小时了,但没有运气。如果你能在图像上看到,我有一个稍微复杂的模型。图像是在调试时从 Chrome 中获取的。

我需要从集合中删除一个模型,而且我需要能够更改主干将在其中发送ajax以进行删除的URL。所以本质上,这是我的模型结构:

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

如何删除书签文章中 ID 为 123123 的模型?

我已经尝试过这个:

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

                  }
              }
          );
model.destroy();

还有这个

aamodel.headerData.collection.remove(model);

根本没有成功。

Model image from Chrome Debug

最佳答案

所提供的信息并未提供很多细节,但我会尝试考虑两种情况来回答:

选项A: 您正在尝试删除集合中具有 bookmarkedArticle.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:如果您想仅使用“destroy”方法删除与主模型关联的书签文章“123123”,首先您必须将“bookmarkedArticles”转换为 Backbone.Collection,因为它只是一个数组对于 Backbone 对象,有一些实用程序可以让您轻松地做到这一点:

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

但默认情况下这是不可能的,那么,如果您想删除“bookmarkedArticle”,您可以创建 Backbone.Model,然后使用 destroy 方法。示例:

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

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

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

关于javascript - Backbone.js 删除模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965082/

相关文章:

javascript - Backbone.js model.save() 发送多个 PUT 请求

javascript - Laravel - href 被忽略的子文件夹问题

javascript - 如何获取 angularFire2 中键的数量或长度

javascript - 将混合内容的 Div 作为图像复制到剪贴板

backbone.js - 在 View 类中丢失 Backbone this 上下文

javascript - 了解如何结合使用 require js 和 text js 在主干应用程序中加载 html 模板

javascript - 使用 Javascript UDF 计算 IRR 时出错

javascript - 如何使用react-router获取元素ID以显示单击元素的所有数据?

backbone.js - 将 View 绑定(bind)到 backbone.js 中的集合

javascript - 主干中的动态加载模板和对象之间的通信