2014-10-18 15 views
16

Mam swoją aplikację, do której musisz się zalogować, aby wejść na inne strony.Usuń stronę z historii, więc "wstecz" będzie działać poprawnie

, więc pierwsza strona to "login" i sprawdza, czy jesteś już zalogowany, jeśli tak, zostaniesz przekierowany do głównej aplikacji strony, jeśli nie, wyświetli się strona logowania.

Problem polega na tym, że użytkownik znajduje się w obszarze zalogowanej strony, a następnie klika z powrotem, aby przejść do strony logowania i został przekierowany z powrotem na stronę główną, ponieważ jest już zalogowany.

Więc utknął w nieskończonej pętli.

Jak usunąć stronę logowania z historii.

podobnie jak w Android "aktywności android usunąć z historii stos"

Odpowiedz

33

tutaj jest rozwiązanie!

prostu użyć:

$ionicHistory.nextViewOptions({ 
    disableBack: true 
    }); 

przykład dla funkcji logowanie:

$scope.login = function() { 

Security.login($scope.cred.email, $scope.cred.password) 
    .success(function(data) { 
     Security.setUser(data.data[0]); 
     $ionicHistory.nextViewOptions({ 
      disableBack: true 
     }); 
     $state.go('posts', {}, {location: "replace", reload: true}); 
    }).error(function(data) { 
     $scope.showAlert(); 
    }); 
}; 
+6

$ ionicViewService został już przestarzały, ale zamiast tego można użyć [$ ionicHistory.nextViewOptions] (http://ionicframework.com/docs/nightly/api/service/$ionicHistory/#nextViewOptions). – Crashthatch

+4

I powinieneś użyć historyRoot: true zamiast disableBack: true w tym przypadku :) –

3

Szybkie wyszukiwanie: https://stackoverflow.com/a/8969975/185672

Najlepsza odpowiedź:

Zamiast window.location = url; przekierować,

spróbować window.location.replace(url); .

po użyciu wymienić() bieżącej strony nie będą zapisywane w sesji historii, co oznacza, że ​​użytkownik nie będzie mógł użyć przycisku Wstecz, aby nawigować do niego.

+0

Użyłem polecenia ui-router: $ state.go ('posts', {}, {location: "replace", reload: true}); i nadal wyświetla wyskakujące okienko z powrotem przycisk –

20

Dla angularjs czystej drodze do osiągnięcia tego celu (zamiast jonowe lub javascript w innych odpowiedzi), użyj lokalizację $ usługa replace() metoda (documentation):

Użyj $location.url('/newpath'); lub $location.path('/newpath'); jak zwykle byłoby do przekierowania w kanciastym. A następnie dodaj po prostu $location.replace();. Lub możesz łańcuchować polecenia w ten sposób:

$location.url('/newpath').replace(); 
Powiązane problemy