假设我有以下代码:
...
routes: {
'someurl:{param}': {
action: 'action',
before: 'beforeaction'
}
},
...
beforeaction: function(param, action) {
if (!param) {
action.stop();
this.redirecTo('someurl:defaultparam');
}
action.resume();
}
...
因此,当我打开host/someurl
时,应用程序会将我重定向到host/someurl:defaultparam
。这部分效果很好。
但我无法在host/someurl
之前使用' Back'返回网址。浏览器按钮,因为当我返回主机/ someurl应用程序时,我再次将我重定向到host/someurl:defaultparam
。我尝试将redirectTo
更改为
history.replaceState(..., host/#someurl:defaultparam);
history.go(0);
但每次重定向都会重新加载页面。
那么,如何在历史记录中使用ExtJs redirectTo并替换url?
更新:我替换了history.go(0);
上的this.redirectTo('someurl:defaultparam', true);
。现在,当我连续两次或多次重定向到某个网址时,我有一个问题
答案 0 :(得分:1)
查看API docs和actual code,看起来redirectTo()
管理Ext.util.History
- 这只是window.location.hash
之上的一个图层。不幸的是,由于后退按钮与window.location
紧密耦合,因此没有一种干净的方法来完成您的需要。
我过去能够覆盖Ext.app.router.Router.recognize() - 它拦截所有Ext JS路由,并且可能使你能够在很多事情发生之前更改URL / hash。不过,我不完全确定它是否有助于你的具体案例。