2015-09-17 39 views
6

Z jakiegoś powodu działa to w IE i Chrome, ale nie Safari i Firefox.

$location.path(lastPath); 
$window.location.reload(true); 

Zamiast przeładunku ostatnią drogę, $window.location.reload(true) bieżąca strona jest przeładowana. Gdzie tak jak w Chrome IE ponowne załadowanie następuje po wystąpieniu $location.path(lastPath) kątowego.

+0

dlaczego chcesz wywołać 'location.reload()'? A może po prostu pomiń '$ location.path()' – charlietfl

+0

Chciałbym zmusić aplikację do przeładowania i wyczyszczenia stanu we wszystkich moich usługach. –

+0

, więc po prostu ustaw adres URL z '$ window.location' – charlietfl

Odpowiedz

2

Dzięki. Poniższy problem rozwiązuje problem.

$window.location.href = lastPath; 
2

Można to zrobić:

$window.location.href='#/home'; 
$window.location.reload() 
1

Zajmuję z Cordova z kątowym 1.5.6. Proste działanie:

$location.path("/someurl"); 
$window.location.reload(); 

działa w chrome i na Androidzie, ale nie w aplikacji ios. To, co działa na wszystkich platformach, polega na przeładowywaniu po zmianie ścieżki lokalizacji.

Osiąga się to przy użyciu zdarzenia $locationChangeSuccess. Podany jest pełny kod kontrolera, aby wszystko było jasne. Wartość $ location.path jest oznaczona, a $ window.location.reload() jest umieszczona w procedurze $ locationChangeSuccess.

angular.module("demo").controller("LoginCtrl", function($scope, $http, $location, $window) { 

$scope.dologin = function() { 
    $scope.message = ""; 
    $http.post(app.baseurl + "/app/login", { 
     email: $scope.email, 
     password: $scope.password 
    }, 
    { 
     withCredentials: true 
    }).success(function(response){ 
     $location.path("/dashboard"); // <---   
    }).error(function(response) { 
     $scope.message = "invalid user/pass: "; 
    }); 
} 

$scope.$on('$locationChangeSuccess', function() { 
    $window.location.reload(true); // <--- 
}); 

});

Powiązane problemy