当前位置: 首页 > 面试题库 >

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

谭彦
2023-03-14
问题内容

在我的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');
            }
        }); 
    });
});


 类似资料:
  • 问题内容: 我在www.darknovagames.com上运行了基于浏览器的游戏。最近,我一直在努力使用CSS重新格式化该网站,试图让其所有页面都根据HTML标准进行验证。 我一直在想着要在页面左侧放置AJAX导航菜单的想法(而不是每次都将用户带到一个单独的页面,而是需要重新加载标题和导航栏,而这几乎是不会改变的),我知道如果这样做,我可能会破坏浏览器中的“前进/后退”按钮。我的问题是,我应该继

  • 问题内容: 如何禁用浏览器的“后退”按钮(跨浏览器)? 问题答案: 这个问题是非常相似,这一个 … 您需要强制缓存过期才能正常工作。将以下代码放在页面代码后面。

  • 我想我问错了问题,也就是说,它的措辞是错误的,因为我找不到这个问题的答案,而且我不可能是第一个问这个问题的人.... 目的:当用户将鼠标移动到后退按钮(history.back)上时,做一些事情。 为什么:当用户将鼠标移到后退按钮上或移向后退按钮时,会弹出一个带有站点提供的模型。 问题: 后退按钮是否有一个选择器,这样我就可以执行以下操作: > 取回按钮X和Y线 获取鼠标按钮X和Y线 比较,如果相

  • 我有这样的div标签 并且脚本将在每次单击“a”标记时运行 每当点击<代码> 谢谢:)

  • 问题内容: 使用Javascript或AngularJS控制或禁用浏览器后退按钮 在这里我不是在问一个问题,但我想展示一个解决方案,以解决您使用AngularJS甚至Javascript时如何禁用和控制浏览器的后退按钮 问题答案: 如果您仅使用Javascript,则可以通过以下链接检查如何禁用“后退按钮”: http://jordanhollinger.com/2012/06/08/disabl