ExtJS redirectTo在历史记录中没有保存URL

时间:2015-09-24 14:34:30

标签: javascript extjs extjs6

假设我有以下代码:

...
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);。现在,当我连续两次或多次重定向到某个网址时,我有一个问题

1 个答案:

答案 0 :(得分:1)

查看API docsactual code,看起来redirectTo()管理Ext.util.History - 这只是window.location.hash之上的一个图层。不幸的是,由于后退按钮与window.location紧密耦合,因此没有一种干净的方法来完成您的需要。

我过去能够覆盖Ext.app.router.Router.recognize() - 它拦截所有Ext JS路由,并且可能使你能够在很多事情发生之前更改URL / hash。不过,我不完全确定它是否有助于你的具体案例。