如何在参数更改后触发功能,但在导航到新路线时不能触发

时间:2016-04-12 01:08:16

标签: javascript angularjs angular-ui-router

每当用户在浏览器历史记录中向前或向后导航时,我都需要触发事件,但仅限于特定路线上。我已经尝试在控制器中为此路由使用$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} }。

回顾:在浏览器历史记录中工作正在进行,但不会回来。

0 个答案:

没有答案