2016-12-16 68 views
1

在控制器A我做$location.path('/home'),但实际上我想要一个正常的重定向。 $ location.path不会重新加载页面。我知道在UI路线有$state.go({reload:true}),但如何与正常的ngRoute做到这一点?我做

.controller('home', function($route){ 
$route.reload() 
} 

我得到了一个无限循环。

+1

http://stackoverflow.com/questions/16002984/angularjs-how-can-i-do-a-redirect-with-a-full-page-load – Sravan

+0

提供一些代码。所以这个问题可以找到。 – SaiUnique

回答

0

可以使用窗口对象重新加载,而不是$location.path('/path');

window.location = '/path'; 

如果你想使用ngRoute,你可以重新载入routeChange页:

myApp.run(['$route', '$rootScope', function ($route, $rootScope) { 
    return $rootScope.$on('$routeChangeStart', function (event, next, current) { 
     $route.reload(); 
    }); 
}]); 
0

首先你为什么要重装页面在导航中的位置变化?我认为我们不需要重新加载()位置更改。

您被赋予$ route.reload()作为即时功能。控制器在导航和检查即时功能时执行并运行$ route.reload();.因此路由重新加载并且控制器再次启动,并且再次执行on-fly函数$ route.reload();.所以重装正在无限。

你可以按照需要在函数ng-click中尝试$ route.reload。不要使用reload()函数作为即时函数。

例子。

$scope.saveData = function(){ 
//some save functionality and reload the route 
$route.reload(); 
} 

<button ng-click="saveData">Save</button> 
+0

呃?如果我在控制器A中使用你的代码,它会重新加载,它不会去任何地方。 –

+0

是的,杰米我知道。我只是说了一点。为什么我们需要重新加载页面,而$ location.path();.自动控制器在更改路线时取得负荷。 –