gpt4 book ai didi

javascript - Ember 如何在手动刷新页面时保留查询参数?

转载 作者:行者123 更新时间:2023-11-30 11:52:51 25 4
gpt4 key购买 nike

我正在使用 ember 2.7.0。手动刷新页面时,ember 会清除 ember-data 以及我们的查询参数,因此我无法在刷新时在 setupController 中加载页面。是否有任何可能的方法来保留模型和查询参数,至少保留查询参数可以重新加载我的页面。

route.js

model(params) {   
return this.store.peekRecord("book",params.book_id);
},

setupController(controller,model,params){
if(!model){
//fetch book record again if the model is null
}
controller.set('isdn',params.queryParams.isdn);
controller.set('book',model);
}

任何帮助都应该是可观的。

根据 Adam Cooper 评论编辑 setupController:

setupController(controller,model,params){
var isdn = params.queryParams.msisdn;
controller.set('isdn',isdn);
if(!model){
this.store.findRecord('book', isdn).then((customer) => {
this.set('book',customer);
},(resp,status) => {
this.set('errorMessage', `Book with this ${isdn} does not exist.`);
this.set('book', []);
});
}else{
controller.set('device',model);
}
}

页面在“findRecord”返回 promise 之前呈现。有什么方法可以停止页面呈现,直到 find record 解决了 promise?

最佳答案

您正在设置路由属性而不是 Controller ..

setupController(controller, model, params){
var isdn = params.queryParams.msisdn;
controller.set('isdn', isdn);
if(!model){
this.store.findRecord('book', isdn).then((customer) => {
controller.set('book', customer);
}, (resp, status) => {
controller.set('errorMessage', `Book with this ${isdn} does not exist.`);
controller.set('book', []);
});
}else{
controller.set('device', model);
}

只有 Controller 属性会装饰模板。

您甚至可以尝试下面的方法,为什么不给模型钩子(Hook)解决的机会,因为这将等待 Promises 解决。

model(params) {   
var result = this.store.peekRecord("book",params.book_id);
if(result !== null){
result= this.store.findRecord('book', params.book_id)
}
return result;
}
setupController(controller,model){
controller.set('book',model);
}

关于javascript - Ember 如何在手动刷新页面时保留查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com