Lorsque je navigue sur une page spécifique, la fonction surchargée normalizeResponse
dans mon sérialiseur utilisé conjointement avec le code dans ma fonction routeur model
, d'ajouter des métadonnées à mon modèle, fonctionne correctement. Fondamentalement, normalizeResponse
fonctionne d'abord, puis ma fonction model
dans mon routeur.Ember normalizeResponse lorsque naviguer à la page de lien à
serializers/application.js
import App from '../app';
import JSONAPISerializer from 'ember-data/serializers/json-api';
App.storeMeta = {};
export default JSONAPISerializer.extend({
normalizeResponse(store, primaryModelClass, payload){
App.storeMeta[primaryModelClass.modelName] = payload.meta;
return this._super(...arguments);
}
});
Et dans mon modèle.
import App from '../app'
...
model(params){
const data = {};
return this.store.findRecord('myModelType', params.id).then((myModelType)=>{
myModelType.meta = App.storeMeta['myModelType'];
return myModelType;
},()=>{ //error
this.get('session').invalidate();
});
}
Lorsque je navigue sur cette page spécifique par un link-to
d'une autre page, le code du modèle est appelé en premier lieu, donc il n'y a pas de données méta étant attachées au modèle.
Comment faire pour que la fonction normalizeResponse
s'exécute avant la fonction model
lors de la navigation à partir de link-to
?
Toute aide serait grandement appréciée.
Apparemment, cela semble être un problème qui dure depuis des années. Le travail consiste-t-il simplement à faire un appel ajax et à pousser au magasin? – user2517182