【发布时间】:2019-10-09 13:27:14
【问题描述】:
如何对同一条路由执行一些replaceWith但参数不同?
路由声明为:
this.route('sampleRoute', { path: '/:param_name' });
这个 'sampleRoute' 路由重现了这个问题:在其中的replaceWith 之后,URL 没有改变。
let globalFlag = null;
export default Route.extend({
afterModel() {
console.log("welcome");
if(globalFlag){
console.log(this.router.location.getURL());
console.log(this.paramsFor(this.routeName).param_name);
} else {
globalFlag = true;
this.replaceWith(this.routeName, 'progValue');
}
}
});
尝试了 beforeModel、model、afterModel。如何在运行某些代码之前正确设置 URL?
用http://localhost/sampleRoute/browserValue 测试这条路线会产生:
Expected output:
welcome
welcome
/sampleRoute/progValue
progValue
Actual output:
welcome
welcome
/sampleRoute/browserValue
progValue
【问题讨论】:
-
AFAIK 路由器将停留在旧位置/URL,直到目标路由
afterModel成功完成。所以你只是来早了。
标签: ember.js ember-router