【发布时间】:2017-09-29 21:28:02
【问题描述】:
当我导航到特定页面时,我的序列化程序中的重写函数 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 导航到时,如何让normalizeResponse 函数在model 函数之前运行?
任何帮助将不胜感激。
【问题讨论】:
-
显然,这似乎是一个已经存在多年的问题。是否只是做一个 ajax 调用并推送到商店?
标签: javascript ember.js metadata link-to serialization