如何在Ember.js模板中显示belongsTo对象的属性

时间:2015-09-22 04:04:51

标签: ember.js ember-data relationships

在我的Ember应用程序中,调查属于用户;用户有很多调查。在我的模板中,我想显示一个调查列表,以及创建它们的用户的名称。现在,我正在通过应用程序路径将侧载数据推送到商店,并且它显示在ember inspector-> Data中。调查信息在模板中正确显示,但不会显示相应用户的firstName。帮助/指导赞赏。

survey.js (型号)

import DS from 'ember-data';

export default DS.Model.extend({
  user: DS.belongsTo('user', {async: true}), //tried without async as well
  title: DS.attr(),
  post: DS.attr()
});

user.js (型号)

import DS from 'ember-data';

export default DS.Model.extend({
  surveys: DS.hasMany('survey', {async: true}),  
  firstName: DS.attr()
});

application.js (申请路线)

export default Ember.Route.extend({
  model() {
    this.store.push({
      data: [{
        id: 1,
        type: 'survey',
        attributes: {
          title: 'My First Survey',
          post: 'This is my Survey!'
        },
        relationships: {
          user: 1
        }
      }, {
        id: 2,
        type: 'survey',
        attributes: {
          title: 'My Second Survey',
          post: 'This is survey 2!'
        },
        relationships: {
          user: 1
        }
      }, {
        id: 1,
        type: 'user',
        attributes: {
          firstName: 'Tyler'
        },
        relationships: {
          surveys: [1, 2]
        }
      }]
    });
  }
});

surveys.js (路线)

export default Ember.Route.extend({
  model () {
    return this.store.findAll('survey');
  }
});

surveys.hbs (模板)

<ul>
  {{#each model as |survey|}}
    <li>
      <strong>{{survey.title}}</strong> //This works
      <br>
      {{survey.post}}                   //This works
      <br>
      Author: {{survey.user.firstName}} //This does not work
    </li>
  {{/each}}
</ul>

解决方案 - 更新了application.js

export default Ember.Route.extend({
  model() {
    this.store.push({
      "data": [      //Added double quotes throughout to conform to documentation
        {
          "id": "1",
          "type": "survey",
          "attributes": {
            "title": "My First Survey",
            "post": "This is my Survey!"
          },
          "relationships": {
            "user": {
              "data": {
                "id": "1",
                "type": "user"
              }
            }
          }
        }, {
          "id": "2",
          "type": "survey",
          "attributes": {
            "title": "My Second Survey",
            "post": "This is survey 2!"
          },
          "relationships": {
            "user": {
              "data": {
                "id": "1",
                "type": "user"
              }
            }
          }
        }
      ],
      "included": [
        {
          "id": "1",
          "type": "user",
          "attributes": {
            "firstName": "Tyler"
          } //no need to include user's relationships here
        }
      ]
    });
  }
});

1 个答案:

答案 0 :(得分:0)

有效负载关系部分不正确。应该是:

    relationships: {
      user: {
        data: {
          id: 1,
          type: 'user'
        }
      }
    }

另外我认为“用户”有效负载应该在“包含”部分。 JSONAPISerializer api