当我导航到特定页面时,我的序列化程序中的重写函数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
函数运行?
非常感谢任何帮助。
答案 0 :(得分:0)
任何看到此内容的人的答案是将{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();
});
}
更多信息here。感谢该网站的答案。