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