如何在不影响ui路由器状态机的情况下,在点击浏览器返回时移动到特定状态



我正在创建一个安全的网站(使用AngularJS 1.3),如果用户单击浏览器返回按钮,我想将其重定向到"登录"状态。我使用ui路由器进行状态更改,并将stateChangeSuccess事件和previousState属性用于其他用例。因此,如果清除ui路由器的先前状态信息,则清除窗口历史记录可能不是一个选项。

感谢

我遇到了同样的问题,我做了一个类似的解决方法:

您可以使用ui路由器可选参数:

https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider

一个例子:

$stateProvider.state('yourState', {
url: "/url",
templateUrl: 'yourTemplate',
params: {
click: {value: "false"}
}
}
)

在ui sref(我的按钮)中,我使用:

ui-sref="yourState({click: 'true'})"

之后,您可以使用$stateChangeStart来防止返回或做任何您想做的事情:

$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
if (toState.name === 'yourState') {
if (toParams.click == 'false') {
// DO YOUR THING
}
};
});

我知道这不是一个通用的解决方案,但我认为你可以调整它来处理你的所有应用程序(可能是州名称的正则表达式)

最新更新