我正在使用一个大型应用程序,因为大多数页面已经构建,当前架构使用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
??