无法从离子注销

时间:2015-05-29 02:12:02

标签: angularjs ionic-framework angular-local-storage

嗨我有离子登录和退出的问题。

每次退出后,我仍然可以点击后退按钮,它会将我带回上一页。我可以知道如何在注销时清除或删除会话,以便用户无法从登录页面返回上一页吗?

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

在登录期间我使用localstorage来表示用户已登录

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

3 个答案:

答案 0 :(得分:14)

我会做这样的事情:

$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);

};

我发现添加一点延迟允许$ionicHistory清除缓存。

$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
  • disableBack :下一个视图应该忘记其后视图,并将其设置为null。
  • historyRoot :下一个视图应成为其历史记录堆栈中的根视图。

答案 1 :(得分:5)

$ionicHistory.clearCache()现在返回promise,因此您可以确保清除缓存。所以你可以这样打电话:

$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');
})

没有必要像上面那样超时。

credit goes to

答案 2 :(得分:2)

这是因为ionic正在缓存视图,因此这将阻止离子通过控制器。

所以你可以按如下方式破坏缓存

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

read here for more