我从服务器 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.
您的选择:
- 创建
SectionItem
型号HasOne
Section
和HasOne
Item
。有人发布了关于这种设置的 fiddle http://jsfiddle.net/mmacaula/XaESG/2/ - 使用另一个库 - 或您使用的库的扩展,例如 https://github.com/jj-studio/Backbone-JJRelational
- 将属性添加到
Section
使每一件产品都独一无二的型号 key 。不过,这并不是实现您想要做的事情的好方法。
这是一个非常好的引用答案:Implementing a Many-to-Many relationship with Backbone-Relational
关于javascript - 如何不删除 Backbone 集合中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841095/