【问题标题】:How to not remove duplicates in collection in backbone如何不删除骨干集合中的重复项
【发布时间】:2015-08-05 19:22:15
【问题描述】:

我从服务器 JSON 创建主干集合。数据来自 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'
                    }
                }
            ]
});

【问题讨论】:

    标签: javascript backbone.js backbone-relational


    【解决方案1】:

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

    其实来自docs

    Backbone.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 模型键添加一个属性,使每个键都是唯一的。不过,这不是实现您想要做的事情的好方法。

    这是一个很好的参考答案:Implementing a Many-to-Many relationship with Backbone-Relational

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2012-03-04
      相关资源
      最近更新 更多