如何处理嵌套在关系模型中的集合
How to deal with a collection nested in a RelationalModel?
我使用Backbone-Relational 创建一个复杂的模型层次结构,代码如下所示:
var ModelA = Backbone.Model.extend({
initialize: function () {
console.log('model a initialized!')
}
});
var CollectionA = Backbone.Collection.extend({
model: ModelA
});
var ModelB = Backbone.RelationalModel.extend({
relations: [{
type: Backbone.HasMany,
key: 'Collection',
collectionType: CollectionA
}]
});
var data = new ModelB({
name: 'ModelB',
Collection: [{
name: 'ModelA-1'
}, {
name: 'ModelA-2'
}]
});
console.log(data.get('Collection').at(0) instanceof ModelA); // false
console.log(data.get('Collection').at(0) instanceof ModelB); // true
console.log(JSON.stringify(data.toJSON()));
// {"name":"ModelB","Collection":[{"name":"ModelA-1","Collection":[]},{"name":"ModelA-2","Collection":[]}]}
如您所见,即使成功创建了ModelB
,也不会调用ModelA
initialize()
。检查类型证明集合中的对象未ModelA
。我该如何解决这个问题?
需要
两个更改:使ModelA
成为RelationalModel
(而不仅仅是标准),并告诉ModelB
ModelA
是它的relatedModel
,如下所示:
var ModelA = Backbone.RelationalModel.extend({
initialize: function () {
console.log('model a initialized!')
}
});
...
var ModelB = Backbone.RelationalModel.extend({
relations: [{
type: Backbone.HasMany,
relatedModel: 'ModelA',
key: 'Collection',
collectionType: CollectionA
}]
});
演示。
相关文章:
- Ext.js从json构建模型关系的问题
- 骨干关系中的链接模型
- 在Knockout.js模型中创建项之间的关系
- 使用茉莉花测试主干关系模型
- 当一个模型在骨干关系中被销毁时,销毁相关模型的最佳方法是什么?
- 在这种情况下,我应该如何在余烬中放置我的模型有很多关系
- Ember.js:如何表示一个有多个模型的关系
- 如何通过关系处理特定于父级的模型值
- 为什么没有将关系添加到模型中的 loopback.io 对象中
- 响应骨干关系中的类别模型更改
- Ember.js RESTful 模型关系
- 帆.js:模型本身的一对多关系
- 如何处理嵌套在关系模型中的集合
- 从另一个具有属于关系的模型访问模型属性 Ember.js
- 余烬.js有许多模型关系保存
- 以RESTful的方式处理模型关系
- 如何在路由/控制器中访问ember模型关系属性
- 在AngularJS中管理模型关系
- 强循环:相互模型关系
- 角度 JS 模型关系