location.href的工作方式类似于angularJS中的浏览器后退按钮

时间:2018-01-12 10:16:12

标签: javascript angularjs

我正在使用一个大型应用程序,因为大多数页面已经构建,当前架构使用location.href来更改URL。我们正在使用angularJS,我知道这不是在angularJS中进行路由的正确方法,但在任何地方进行更改都会让人头痛。 问题是我要求在每个页面中显示动态痕迹,并且当用户单击浏览器后退按钮时,它应显示正确的痕迹路径。我已经创建了一个历史数组,当浏览器返回按钮单击事件发生时,我将从数组中删除一个项目并将最后一项推送到痕迹。链接作为url,一切正常,但在下面的函数中发生重定向时逻辑失败

location.href="#/dashboard";

以下代码被视为按代码点击浏览器后退按钮。下面是我的后退按钮检测代码。

$rootScope.$on('$locationChangeSuccess', function() {
        $rootScope.actualLocation = $location.path();
    });        
   $rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {

        if($rootScope.actualLocation === newLocation) {
            //logic
        }
        else{
            //logic
        }
    });

我可以在每个重定向代码之前使用rootScope变量进行条件检查,但这不是一个合适的解决方案,因为重定向代码存在于应用程序的500多个位置。

那么无论如何都要检测呼叫是来自浏览器后退按钮还是来自某些location.href ??

0 个答案:

没有答案