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。感谢该网站的回答。
当我导航到特定页面时,我的序列化程序中的覆盖函数 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。感谢该网站的回答。