每当用户在浏览器历史记录中向前或向后导航时,我都需要触发事件,但仅限于特定路线上。我已经尝试在控制器中为此路由使用$scope.$on('$locationChangeSuccess', function...
,但即使我使用浏览器前进和后退按钮导航到完全不同的路径,也会触发。
通过检查$location.path()
并仅在匹配路由时执行代码,我可以在浏览器历史记录中向前导航时阻止此行为。遗憾的是,如果将向后通过浏览器的历史记录导航到其他路径,则无效。我在下面的代码中添加了一些摘录以澄清。
// How parameters are being updated
$location.search('folder', searchId);
// Listening for the change
$scope.$on('$locationChangeSuccess', function() {
if ($location.path() === '/initialRoute') {
doThings();
}
});
当此代码失败,因为我在浏览器历史记录中导航回到不同的路径时,我最终卡在原始路径上,并且URL变为website.com/initialRoute?optional_params=
,它永远不会是website.com/routeInMyHistory
,而不是{{1} }。
回顾:在浏览器历史记录中工作正在进行,但不会回来。