javascript - 如何不删除 Backbone 集合中的重复项

标签 javascript backbone.js backbone-relational

我从服务器 JSON 创建 Backbone 集合。数据来自 mongo,因此每个项目都有相同的对象,并且主干会删除这些重复项。这对我来说是不需要的行为,所以我找不到保留此实例的解决方案。获取我的项目后,第二个对象(id:2)中只有“section1”。我在第一个对象中也需要相同的部分。例如我的服务器响应是:

items:  [{
  id:1,
  sections: [{
    id: 1.//this object is removed
    name: 'section1'
   }] 
}, {
  id: 2,
  sections: [{
    id:1.
     name: 'section1'
  }]
}]

我的剖面模型只是:

Section = Backbone.RelationalModel.extend({
});

和商品型号:

Item = Backbone.RelationalModel.extend({
            relations: [
                {
                    'type': 'HasMany',
                    'key': 'sections',
                    'relatedModel': 'Section',
                    'includeInJSON': 'id',
                    'reverseRelation': {
                        'key': 'item',
                        'includeInJSON': 'id'
                    }
                }
            ]
});

最佳答案

如果我没记错的话,这个插件不支持多对多。所以,发生的事情是它正在附加 Section 1到第一个Item ,然后将其附加到第二个并将其从第一个中删除。

事实上,从 docs :

Backbone.HasMany

Defines a HasMany relation. When defining a reverseRelation, the type will be HasOne.

您的选择:

  1. 创建 SectionItem型号 HasOne SectionHasOne Item 。有人发布了关于这种设置的 fiddle http://jsfiddle.net/mmacaula/XaESG/2/
  2. 使用另一个库 - 或您使用的库的扩展,例如 https://github.com/jj-studio/Backbone-JJRelational
  3. 将属性添加到 Section使每一件产品都独一无二的型号 key 。不过,这并不是实现您想要做的事情的好方法。

这是一个非常好的引用答案:Implementing a Many-to-Many relationship with Backbone-Relational

关于javascript - 如何不删除 Backbone 集合中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841095/

相关文章:

javascript - 在给定最小值和最大值的情况下,构造月-年日期的排序数组的算法的缺陷在哪里?

Javascript 对象 [排序]

javascript - Backbone.js 共享上下文模型

javascript - Backbone.js 模型未传递给 View

node.js - 集合和 View 在 Backbone 脚本中不起作用?

backbone.js - Backbone 代码产生不可用的堆栈跟踪

javascript - 如何编写一个不可点击的链接,在点击时运行 javascript 函数?

javascript - 无法读取未定义的属性 'setState' - 转换为箭头函数

javascript - 用于登录和注销功能的 Backbone.js 架构

javascript - Backbone.js View 可以有一个模型和一个集合吗?