2015-05-29 26 views
5

Ciao Ho un problema con accesso ionico e logout.impossibile disconnettersi da ionico

Ogni volta dopo il logout, posso ancora fare clic sul pulsante Indietro per tornare alla mia pagina precedente. posso sapere come cancellare o cancellare la sessione al momento del logout in modo che l'utente non riesca a tornare alla pagina precedente dal login?

var default_stat; 
$scope.logout = function(){ 
    $ionicLoading.show({template:'Logging out....'}); 
    $localstorage.set('loggin_state', ''); 
    $state.go('login'); 
    $ionicLoading.hide(); 
    $ionicHistory.clearHistory(); 
    $ionicHistory.clearCache(); 
}; 

durante il login che uso localStorage indicare utente ha registrato

$localstorage.set('loggin_state', '1'); 
+0

Ho lo stesso problema, ma non cancella la cache o la storia. Ho letto in docs che $ ionicHistory cancellerà solo la cache di tutte le altre viste tranne la vista corrente. Ho bisogno di rispondere a questa stessa domanda. –

+0

dai un'occhiata a questo http://stackoverflow.com/questions/29841166/reset-unload-controller-after-changestate-logout-called-angularjs –

risposta

14

vorrei fare qualcosa di simile:

$scope.logout = function(){ 
    $ionicLoading.show({template:'Logging out....'}); 
    $localstorage.set('loggin_state', ''); 

    $timeout(function() { 
     $ionicLoading.hide(); 
     $ionicHistory.clearCache(); 
     $ionicHistory.clearHistory(); 
     $ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 
     $state.go('login'); 
     }, 30); 

}; 

ho scoperto che l'aggiunta di un po 'di ritardo permettono $ionicHistory per cancellare la cache.

$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 
  • disableBack: La vista successivo dovrebbe dimenticare la sua vista posteriore, e impostarlo su null.
  • historyRoot: la vista successiva dovrebbe diventare la vista radice nel suo stack cronologico.
2

Questo perché ionic ha memorizzato la vista, così che si fermerà ionico passare attraverso il controllore.

Così si potrebbe busto cache come segue

<ion-view cache-view="false" view-title="My Title!"> 
    ... 
</ion-view> 

read here for more

4

$ionicHistory.clearCache() ora restituisce la promessa in modo da poter garantire che la cache sia deselezionata. Quindi puoi chiamare in questo modo:

$ionicHistory.clearCache().then(function() { 
    //now you can clear history or goto another state if you need 
    $ionicHistory.clearHistory(); 
    $ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 
    $state.go('login'); 
}) 

Non è necessario il timeout di cui sopra.

credit goes to

Problemi correlati