Ember数据存储对象无法通过模板呈现

时间:2017-01-25 15:37:11

标签: javascript templates serialization ember.js

我正在尝试使用ember的商店向api发送数据请求。我非常接近它的工作,但由于某种原因,模型数据不会显示在模板中。

我收到服务器的回复,如下所示:

artist_profile: {
   alias:"alias",
   bio:"biofda",
   created_at:Tue Nov 22 2016 10:50:27 GMT-0500 (EST),
   location:"location",
   portfolio_link:"link",
   updated_at:Thu Dec 22 2016 20:55:38 GMT-0500 (EST)
}

但是当它通过序列化程序时,它会在模型​​上设置如下:

路线模型:

...
data: {
  alias:"alias",
  bio:"biofda",
  created_at:Tue Nov 22 2016 10:50:27 GMT-0500 (EST),
  location:"location",
  portfolio_link:"link",
  updated_at:Thu Dec 22 2016 20:55:38 GMT-0500 (EST),
},
id:"980190976",
...

我认为这就是它无法在模板上正确呈现的原因。实际上,如果我调试到路由并调用this.model.alias,它将返回为undefined。但如果我route.get('model').get('alias'),则返回别名值。

任何人都知道我做错了什么来阻止商店正确返回模板可以渲染的模型?

更多代码:

适配器:

 export default DS.RESTAdapter.extend({
    host: CONFIG.API_HOST,
    pathForType() {
      return 'artist_profiles';
    }
  });

串行:

import DS from 'ember-data';

export default DS.RESTSerializer.extend({
  normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) {
    payload = { artist_profiles: payload.artist_profile };
    return this._super(store, primaryModelClass, payload, id, requestType);
  }
});

模特课:

import DS from 'ember-data';

const {
  Model,
  attr,
  belongsTo
} = DS;

export default Model.extend({
  alias: attr('string'),
  bio: attr('string'),
  portfolio_link: attr('string'),
  location: attr('string')
});

路线模型钩子:

model() {
  return this.get('store').find('artist-profile', 980190976);
}

模板:

ARTIST PROFIlE <br>

{{model.alias}}

{{model.bio}}

{{model.location}}

1 个答案:

答案 0 :(得分:0)

您可以向模板添加{{log}},例如{{log model}},从而在模板中添加调试功能。这会将模型输出到您的控制台。

当我过去遇到类似的问题时,通常是因为我没有递归处理模型,所以也许尝试使用firstObject,例如{{model.firstObject.alias}}