@gattra wrote:
I am trying to use ember's store to send requests to the api for data. I am so close to getting it working, but for some reason, the model data doesn't display in the template.
I get a response back from the server which looks like this:
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) }
But when it goes through the serializer, it is set on the model like this:
Route model:
... 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", ...
I think this is why it is not rendering properly on the template. In fact if i debugger into the route and call
this.model.alias
, it is returned as undefined. but if i doroute.get('model').get('alias')
, it returns the alias value.Anyone know what I'm doing wrong to prevent the store from properly returning a model that the template can render?
More code:
Adapter:
export default DS.RESTAdapter.extend({ host: CONFIG.API_HOST, pathForType() { return 'artist_profiles'; } });
Serializer:
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); } });
Model class:
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') });
Route model hook:
model() { return this.get('store').find('artist-profile', 980190976); }
Template:
ARTIST PROFIlE <br> {{model.alias}} {{model.bio}} {{model.location}}
Posts: 1
Participants: 1