我正在创建一个安全的网站(使用AngularJS 1.3),如果他点击浏览器后退按钮,我想将用户重定向到“登录”状态。我正在使用ui-router进行状态更改,并且我将stateChangeSuccess事件和previousState属性用于其他用例。因此,如果清除ui-router的previousState信息,清除窗口历史记录可能不是一个选项。
由于
答案 0 :(得分:1)
我遇到了同样的问题,我做了一个像这样的解决方法:
您可以使用ui-router可选参数:
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
}
};
});
我知道这不是一个通用的解决方案,但我认为您可以调整它以适用于您的所有应用程序(可能是州名的常规表达式)