ember normalizeResponse从链接导航到页面时
问题描述:
当我导航到特定页面时,我的序列化程序中的重写函数normalizeResponse
与我的路由器model
函数中的代码结合使用,将元数据添加到我的模型中,工作正常。基本上,normalizeResponse
先运行,然后我的model
功能在我的路由器中运行。ember normalizeResponse从链接导航到页面时
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
函数中。
所以从我原来的职位的第二代码片段将不会像以下:
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。感谢那个网站的答案。
显然,这似乎是一个多年来一直存在的问题。工作是做一个阿贾克斯电话并推送到商店? – user2517182