模型

时间:2015-08-25 22:46:54

标签: javascript ember.js ember-cli

我目前正在尝试将一组承诺加载到模型中,但是当我开始在模板中循环结果时,我无法访问任何关系。 即使我只返回一个承诺,我也可以访问模板中的关系。

我错过了一些关于如何处理承诺的返回值的事情,就好像它是单一的一样?

使用 - 灰烬& 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);
  }
});

0 个答案:

没有答案