AngularJS仅在浏览器的后退按钮上重定向路由

在我的AngularJS应用程序中,route当用户未登录时,我将重定向到特定页面。为此,我在上使用了一个变量$rootScope

现在,我想在用户登录时阻止浏览器的后退按钮。我想将其重定向到特定页面(registration视图)。问题是我不知道是否有 后退按钮事件

我的代码是:

 angular.module('myApp',[...]

//Route configurations

}])

.run(function($rootScope, $location){

$rootScope.$on('$routeChangeStart', function(event, next, current){

if(!$rootScope.loggedUser) {

$location.path('/register');

}

});

$rootScope.$on('$locationChangeStart', function(event, next, current){

console.log("Current: " + current);

console.log("Next: " + next);

});

});

因此,$locationChangeStart我将编写一个伪代码,例如:

if (event == backButton){

$location.path('/register');

}

可能吗?

一个幼稚的解决方案是编写一个函数,该函数检查nextcurrent的顺序是否错误,并检测用户是否 返回

还有其他解决方案吗?我以错误的方式解决问题?

回答:

我找到了解决方案,这比我想象的要容易。我在$rootScope实际位置上的一个对象上注册,并在每次位置更改时都与新对象一起检查。通过这种方式,我可以检测用户是否返回历史记录。

angular.module('myApp',[...], {

//Route configurations

}])

.run(function($rootScope, $location) {

$rootScope.$on('$routeChangeStart', function(event, next, current) {

if(!$rootScope.loggedUser) {

$location.path('/register');

}

});

$rootScope.$on('$locationChangeSuccess', function() {

$rootScope.actualLocation = $location.path();

});

$rootScope.$watch(function() { return $location.path() },

function(newLocation, oldLocation) {

if($rootScope.actualLocation == newLocation) {

$location.path('/register');

}

});

});

});

以上是 AngularJS仅在浏览器的后退按钮上重定向路由 的全部内容, 来源链接: utcz.com/qa/399327.html

回到顶部