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

Больше информации здесь. Спасибо этому сайту за ответ.

Другие вопросы по тегам