在不重新加载路由的情况下更改路径+;允许后退按钮重新加载路线(AngularJS)

在不重新加载路由的情况下更改路径+;允许后退按钮重新加载路线(AngularJS),angularjs,routes,Angularjs,Routes,因此,我正在尝试在不重新加载控制器等的情况下更改应用程序的$location.path。我在此页面上找到了一个解决方法: 问题在于,该解决方案工作得太好,当按下浏览器中的“后退”按钮时,页面无法重新加载。我注意到的另一个奇怪的问题是,当我将$rootScope.$放在(“$locationChangeSuccess”,function(){…})上时在我的应用程序中运行,在页面加载/路由更改时调用它超过3000次 我一直使用的代码如下所示: myService.skipReload = fun

因此,我正在尝试在不重新加载控制器等的情况下更改应用程序的$location.path。我在此页面上找到了一个解决方法:

问题在于,该解决方案工作得太好,当按下浏览器中的“后退”按钮时,页面无法重新加载。我注意到的另一个奇怪的问题是,当我将
$rootScope.$放在(“$locationChangeSuccess”,function(){…})上时
在我的
应用程序中运行
,在页面加载/路由更改时调用它超过3000次

我一直使用的代码如下所示:

myService.skipReload = function () {

  var lastRoute = $route.current;

  $rootScope.$on('$locationChangeSuccess', function () {
    $route.current = lastRoute;
  });

  return MyService;
};
然后我像这样使用它:
myService.skiepreload.changePath(url)其中
changePath(url)
仅包含
$location.path(url)

编辑:我在app.run中发现了一个难看的解决方法,我写道:

$rootScope.$on('$locationChangeSuccess', function() {

  $rootScope.actualLocation = $location.path();
});


$rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
  if($rootScope.actualLocation === newLocation) {
    myLocationService.refreshView();
    console.log('Use of history back, may not always work...');
  }
});
如果有更好的方法,请告诉我