ember 从 link 导航到页面时正常化响应

ember normalizeResponse when navigated to page from link-to

当我导航到特定页面时,我的序列化程序中的覆盖函数 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 导航到该特定页面时,首先调用模型代码,因此没有元数据附加到模型。

如何在从 link-to 导航到 model 函数之前将 normalizeResponse 函数设置为 运行?

如有任何帮助,我们将不胜感激。

看到这个的人的答案是将 {reload: true} 作为参数添加到 findRecord 函数。

所以我原来的 post 中的第二个代码片段会像下面这样:

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

更多信息here。感谢该网站的回答。