我目前正在尝试将一组承诺加载到模型中,但是当我开始在模板中循环结果时,我无法访问任何关系。 即使我只返回一个承诺,我也可以访问模板中的关系。
我错过了一些关于如何处理承诺的返回值的事情,就好像它是单一的一样?
使用 - 灰烬& Ember-Data 1.13.8
模型 - 分组项目
export default DS.Model.extend({
group: DS.belongsTo('group', { async : false }),
});
模特 - 小组
export default DS.Model.extend({
code: DS.attr('string'),
name: DS.attr('string'),
});
单一模型示例
model : function(){
return this.store.query('groupedItem', { group_code: 'HOME', position : 1 });
}
在模板中,我可以像这样访问模型关系
{{#each model as |section|}}
<p>{{section.id}}</p>
<p>{{section.group.id}}
{{/each}}
------作为数组承诺的模型--------
model : function(){
return Ember.RSVP.Promise.all(Ember.A([
this.store.query('groupedItem', { group_code: 'HOME', position : 1 }),
this.store.query('groupedItem', { group_code: 'HOME', position : 2 }),
]))
}
在模板中,访问关系失败
{{#each model as |section|}}
{{#each section.content as |item|}}
<p>{{item.id}}</p>
<p>{{item.group.id}}
{{/each}}
{{/each}}
这是一个json响应示例
https://gist.github.com/abFx/873465813cf30746acf9
为了遵循json规则发送正确的关系,我创建了一个自定义序列化程序,它只是将de name而不是group_id转换为group with和id for relationship
export default DS.RESTSerializer.extend({
isNewSerializerAPI: true,
normalizeResponse: function(store, primaryModelClass, payload, id, requestType){
payload['grouped_items'].forEach(function(value, index){
value['group'] = value['group_id'];
});
return this._super(store, primaryModelClass, payload, id, requestType);
}
});