2017-01-25 1 views
0

Ich versuche, Ember-Speicher zu verwenden, um Anforderungen an die API für Daten zu senden. Ich bin so kurz davor, es funktioniert, aber aus irgendeinem Grund werden die Modelldaten nicht in der Vorlage angezeigt.Ember-Datenspeicherobjekt, das nicht über Vorlage rendert

ich eine Antwort vom Server, die wie folgt aussieht:

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) 
} 

Aber wenn es durch den Serializer geht, wird es auf das Modell wie folgt festgelegt:

Strecke Modell:

... 
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", 
... 

Ich denke, das ist, warum es nicht ordnungsgemäß auf der Vorlage rendern. In der Tat, wenn ich Debugger in die Route und this.model.alias aufrufen, wird es als undefined zurückgegeben. aber wenn ich route.get('model').get('alias') mache, gibt es den Alias-Wert zurück.

Wer weiß, was ich falsch mache, um zu verhindern, dass das Geschäft ein Modell, das die Vorlage wiedergeben kann, ordnungsgemäß zurückgibt?

Weitere 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); 
    } 
}); 

Modellklasse:

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') 
}); 

Strecke Modell Haken:

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

Vorlage:

ARTIST PROFIlE <br> 

{{model.alias}} 

{{model.bio}} 

{{model.location}} 
+0

"loadTracks" -Methode in "masterService" einschließen – kumkanillam

+0

geändertes Modell hook – gattra

+0

'find' ist private Methode jetzt. Verwenden Sie stattdessen 'findRecord' anstatt – kumkanillam

Antwort

0

Sie das Debuggen in Ihre Vorlage {{log model}} durch Zugabe von {{log}}, um es zum Beispiel hinzufügen. Dadurch wird das Modell auf Ihrer Konsole ausgegeben.

Wenn ich in der Vergangenheit ähnliche Probleme hatte, ist es normalerweise, weil ich das Modell nicht rekursiv verarbeite, also versuche vielleicht, , z. {{model.firstObject.alias}}.

Verwandte Themen