ember normalizeResponse при переходе на страницу со ссылкой на
Когда я перехожу на определенную страницу, переопределенная функция normalizeResponse
в моем сериализаторе используется в сочетании с кодом в моем маршрутизаторе model
Функция, чтобы добавить метаданные в мою модель, работает правильно. В принципе, normalizeResponse
сначала бегает, потом мой model
функция в моем роутере.
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);
}
});
И в моей модели.
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();
});
}
Когда я перехожу на эту конкретную страницу через link-to
с другой страницы сначала вызывается код модели, поэтому к модели не прикрепляются метаданные.
Как я могу получить normalizeResponse
функция для запуска до model
функция при переходе от link-to
?
Любая помощь будет принята с благодарностью.
1 ответ
Ответ для тех, кто видит это, чтобы добавить {reload: true}
в качестве параметра к findRecord
функция.
Итак, второй фрагмент кода из моего исходного поста будет выглядеть следующим образом:
import App from '../app'
...
model(params){
const data = {};
return this.store.findRecord('myModelType', params.id, {reload: true}).then((myModelType)=>{
myModelType.meta = App.storeMeta['myModelType'];
return myModelType;
},()=>{ //error
this.get('session').invalidate();
});
}
Больше информации здесь. Спасибо этому сайту за ответ.