这是我的Ember-Data模型:
Lrt.Option = DS.Model.extend({
option_relation_value: hasMany('option')
});
以下是JSON的一个示例:(为了这个问题而缩短了)
{
"optionGroups": [],
"optionSubGroups": [
{
"id": "3",
"optionType": [
"80",
"81",
"82",
"83",
"84",
"248",
"278"
],
"title": "Option Group for 80"
}
],
"options": [
{
"id": "45",
"option_relation_value": [
"80"
]
},
{
"id": "80",
"option_relation_value": []
}
]
}
还有“OptionGroup”和“OptionSubGroup”模型,它们是./ / p>中的侧载选项
我遇到的问题是,在将'hasMany'添加到模型中之后,我再也无法查询商店中的选项,如下所示:
this.get('store').find('option')
它只返回“0”,但是在Ember Inspector中,我得到了400多个条目,所以我知道加载了数据。
使用chrome检查器并在所有例外中断时,它会在以下行的Ember-Data第2246行中断:
2246: Ember.assert('The id ' + id + ' has already been used with another record of type ' + type.toString() + '.', !id || !idToRecord[id]);
错误是:
"Cannot call method 'toString' of undefined"
此行中的“type”是'undefined'。
我做错了什么与很多关系?
我正在使用Ember-Data 1.0 Beta 2.
答案 0 :(得分:0)
从技术上讲,这不是侧载,它更像是嵌套加载。这可能与它有关。
对于真正的侧面加载,你需要一个像这样的结构作为你的外部SON响应:
{
"option" : {
"id" : 3,
...
"options" : [45,80]
}
"options" : [
{ "id":45 , ... },
{ "id":80 , ... }
]
}
以下是有关JSON约定的文档:http://emberjs.com/guides/models/connecting-to-an-http-server/#toc_json-conventions comments
是边加载的示例。
我知道这适用于单独的模型结构(post-> comment),但我不确定自引用树类型结构。