我有一些看起来像这样的数据模型:
App.Order = DS.Model.extend({
name: DS.attr('string'),
legs: DS.hasMany('leg', {async: false})
});
App.Leg = DS.Model.extend({
name: DS.attr('string'),
order: DS.belongsTo('order'),
stops: DS.hasMany('stop', {async: false})
});
App.Stop = DS.Model.extend({
name: DS.attr('string'),
leg: DS.belongsTo('leg'),
});
返回的JSON如下所示:
{
"orders": [
{
"id": 1,
"name": "Order 1",
"legs": []
},
{
"id": 2,
"name": "Order 2",
"legs": [1]
},
{
"id": 3,
"name": "Order 3",
"legs": [2,3]
}
],
"legs": [
{
"id": 1,
"name": "Leg 1",
"stops": [1,2]
},
{
"id": 2,
"name": "Leg 2",
"stops": [2,3]
},
{
"id": 3,
"name": "Leg 3",
"stops": [1,3]
}
],
"stops": [
{
"id": 2,
"name": "Stop 2"
},
{
"id": 1,
"name": "Stop 1"
},
{
"id": 3,
"name": "Stop 3"
}
]
}
当我使用async:true
时,ember为相关的分支(legs?ids[]=1
和legs?ids[]=2&ids[]=3
)发出了http请求,但绝不会请求相关的停靠点。
所以我如上图所示切换到侧面加载,但相关腿部仍然没有停止。
你能帮我理解如何使用嵌套的hasMany关系加载模型吗?或者我哪里出错了?我愿意使用async: true
或async: false
,只要我可以将嵌套数据加载到模型中。