2015-09-17 6 views
6

Per qualche motivo questo funziona in IE e Chrome ma non in Safari e Firefox.

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

invece di ricaricare l'ultimo percorso, $window.location.reload(true) la pagina corrente viene ricaricato. Dove, come in Chrome e IE, il ricaricamento si verifica dopo che si è verificato l'errore $location.path(lastPath) di angular.

+0

perché vuoi chiamare 'location.reload()'? Potrebbe anche saltare '$ location.path()' – charlietfl

+0

Vorrei forzare l'app per ricaricare e cancellare lo stato in tutti i miei servizi. –

+0

quindi imposta l'url con '$ window.location' – charlietfl

risposta

2

Grazie. Il seguente risolve il problema.

$window.location.href = lastPath; 
2

Si può fare questo:

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

sto sviluppando con Cordova con angolare 1.5.6. L'azione semplice di:

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

funziona in chrome e l'app per android, ma non l'app ios. Ciò che funziona su tutte le piattaforme sta facendo il ricaricamento dopo che il percorso della posizione è cambiato.

Questo si ottiene utilizzando l'evento $locationChangeSuccess. Dato è un codice controller completo in modo che le cose siano chiare. $ Location.path è contrassegnato e $ window.location.reload() è posizionato nel gestore $ 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); // <--- 
}); 

});