Ember.js 如何让Ember延迟(异步)加载有很多
可能我误解了Ember是如何延迟加载的Ember.js 如何让Ember延迟(异步)加载有很多,ember.js,ember-data,Ember.js,Ember Data,可能我误解了Ember是如何延迟加载的有很多方面的关系,但我会指定我想要什么,有人可以告诉我是否可能以及如何配置 我使用的是RESTAdapter,我有一个与其他几个对象具有1对多关系的父对象。查看父对象时,我具有要显示为子对象的子对象的链接 例如: // brand.js export default Model.extend({ name: attr('string'), description: attr('string'), dateCreated: attr('date')
有很多方面的关系,但我会指定我想要什么,有人可以告诉我是否可能以及如何配置
我使用的是RESTAdapter
,我有一个与其他几个对象具有1对多关系的父对象。查看父对象时,我具有要显示为子对象的子对象的链接
例如:
// brand.js
export default Model.extend({
name: attr('string'),
description: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
regions: hasMany('region', {async: true})
});
// region.js
export default Model.extend({
name: attr('string'),
dateCreated: attr('date'),
lastUpdated: attr('date'),
brand: belongsTo()
});
当我访问/api/brands/1
时,我将返回以下JSON:
{
"brand": {
"id": 1,
"dateCreated": 1466456255539,
"lastUpdated": 1466456255936,
"name": "Some Brand",
"description": "Voluptates odio nemo corrupti",
}
}
我的路线定义如下:
this.route('brand', {path: '/brands/:brand_id'}, function() {
this.route('regions');
});
因此,在品牌
详细信息屏幕中,我有一个{{outlet}
,当我点击地区
的链接时,我需要获取该品牌的地区,URL将是/api/brands/1/地区
如果我在一个大结果中返回所有数据,则一切正常,我的区域
路由器如下所示:
export default Ember.Route.extend({
model() {
return this.modelFor('brand').get('regions');
}
});
但我不知道该怎么做才能使区域从我的API中正确地惰性地获取。或者如果可能的话。我阅读了侧面加载的内容,目前,我的API不会只返回孩子的ID。以您的示例为例,ember.js不知道要加载哪些区域。您的JSON必须是(非嵌入式):
然后加载id为5和9的区域。或者您可以直接嵌入它们:
{
"brand": {
"id": 1,
"dateCreated": 1466456255539,
"lastUpdated": 1466456255936,
"name": "Some Brand",
"description": "Voluptates odio nemo corrupti",
"regions": [{
"id": "5",
"name": "Hanover",
"dateCreated": "2016-09-25 18:39:18",
"lastUpdated": "2016-09-25 18:39:18",
},{
"id": "9",
"name": "Cologne",
"dateCreated": "2016-01-19 11:59:18",
"lastUpdated": "2016-02-22 12:09:58",
}]
}
}
请参阅后一种方法。一种方法是添加要链接到的查询参数:{{{#链接到“brand.regions”(查询参数brand=model)}
,然后在region-Route
中查询该品牌。如果在激活的模板中的任何位置使用区域
属性,则Ember将自动加载该关系的记录。你能给我们看看你实际显示区域的模板吗?@GJK-我明天上班的时候可以,但这有点道理。我可以告诉你,我不是通过{{brand.regions}}
获取它们的,如果我通过这种方式访问它们,它可能会以不同的方式进行查询。我会试着做些类似的事情,然后再向你汇报。这正是我所害怕的。我希望Ember能够推断出正确的URL,因为regions'
parent<代码>/brands/1/regions
这就是API当前的工作方式。这是有问题的,因为目前,当列表被拉出来时,我必须嵌入所有的子项(或者当我在细节视图上时,我想知道如何让它再次查找品牌)。我的印象是REST适配器也可以处理通过URL获取的许多关系。似乎同意,但我对余烬数据已经不太熟悉了。
{
"brand": {
"id": 1,
"dateCreated": 1466456255539,
"lastUpdated": 1466456255936,
"name": "Some Brand",
"description": "Voluptates odio nemo corrupti",
"regions": [{
"id": "5",
"name": "Hanover",
"dateCreated": "2016-09-25 18:39:18",
"lastUpdated": "2016-09-25 18:39:18",
},{
"id": "9",
"name": "Cologne",
"dateCreated": "2016-01-19 11:59:18",
"lastUpdated": "2016-02-22 12:09:58",
}]
}
}