如何不删除主干中集合中的重复项

How to not remove duplicates in collection in backbone

本文关键字:集合 删除 何不      更新时间:2023-09-26

我从服务器JSON创建主干集合。数据来自mongo,因此每个项目都有相同的对象,主干网会删除这些重复项。这对我来说是不必要的行为,所以,我找不到保留这些实例的解决方案。获取后,我的项目在secound对象(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,然后将其附加到第二个,并从第一个移除。

事实上,从文件来看:

主干网。HasMany

定义HasMany关系定义reverseRelation时,类型将是HasOne

您的选择:

  1. 创建一个SectionItem模型,即HasOne SectionHasOne Item。有人贴出了这种设置的小提琴http://jsfiddle.net/mmacaula/XaESG/2/
  2. 使用另一个库-或您使用的库的扩展,例如https://github.com/jj-studio/Backbone-JJRelational
  3. Section模型密钥添加一个属性,使每个密钥都是唯一的。不过,这不是实现你想要做的事情的好方法

这里有一个很好的参考答案:使用Backbone Relational 实现多对多关系