访问Ember数据在模板上有很多关系

时间:2017-07-19 18:45:56

标签: ruby-on-rails json ember.js

我有一个rails后端,根据JSON API标准(jsonapi-resources gem)提供数据。我有两个模型:Contact和PhoneNumber。

class Contact < ApplicationRecord
  has_many :phone_numbers
end

class PhoneNumber < ApplicationRecord
  belongs_to :contact
end

这是API端点的JSON响应。

{
    "data": [
        {
            "id": "6",
            "type": "phone-numbers",
            "links": {
                "self": "http://localhost:3000/phone-numbers/6"
            },
            "attributes": {
                "name": "byeworld",
                "phone-number": "9212098"
            },
            "relationships": {
                "contact": {
                    "links": {
                        "self": "http://localhost:3000/phone-numbers/6/relationships/contact",
                        "related": "http://localhost:3000/phone-numbers/6/contact"
                    }
                }
            }
        }
    ]
}

这些是我的Ember模特:

联系方式:

import DS from 'ember-data';

export default DS.Model.extend({
  nameFirst: DS.attr('string'),
  nameLast: DS.attr('string'),
  email: DS.attr('string'),
  twitter: DS.attr('string'),
  phoneNumbers: DS.hasMany('phone-number', {async: true, inverse: 'contact'})
});

电话号码:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  phoneNumber: DS.attr('string'),
  contact: DS.belongsTo('contact', {async: true, inverse: 'phoneNumbers'})
});

这是我的路线处理程序:

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return this.store.findRecord('contact', params.contact_id, {include: "phone-numbers"});
  },
  (...)
});

我无法通过以下方式访问模板上的联系人的电话号码:

{{#each model.phoneNumbers as |phone|}}
  {{phone.name}}
{{/each}}

此外,电话号码的数据存在于ember控制台中。我错过了什么?

2 个答案:

答案 0 :(得分:0)

model.PhoneNumbers =&gt; model.phoneNumbers

如果这不仅仅是这个错字,请尝试从JSON API适配器/序列化器扩展模型序列化器/适配器(或者如果所有模型都使用它,则在应用程序序列化器/适配器上执行):

import DS from 'ember-data'; export default DS.JSONAPIAdapter.extend({});

import JSONAPISerializer from 'ember-data/serializers/json-api'; export default JSONAPISerializer.extend({});

答案 1 :(得分:0)

ember-data版本2.14.3中存在未知问题。所以请将你的ember-data版本降级到2.13.2。这可能会解决你的问题。

请参阅此ember-data open issue - https://github.com/emberjs/data/issues/4942