2

假设我有以下代码:

...
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使用“返回”浏览器按钮返回 url,因为当我返回到 host/someurl 时,应用程序会host/someurl:defaultparam再次将我重定向到。我试着redirectTo改成

history.replaceState(..., host/#someurl:defaultparam);
history.go(0);

但是每次重定向都会重新加载页面。

那么,如何使用 ExtJs redirectTo 并替换历史中的 url 呢?

更新:我更换history.go(0);this.redirectTo('someurl:defaultparam', true);. 现在我连续两次或更多次重定向到某个网址时遇到问题

4

1 回答 1

1

查看API 文档实际代码,它看起来像redirectTo()manages Ext.util.History—— 它只是window.location.hash. 不幸的是,由于后退按钮与 紧密耦合,window.location因此没有一种干净的方式来完成您需要的操作。

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

于 2015-09-24T22:31:06.147 回答