2016-02-19 97 views
0

我有一個應用程序,與用戶需要把您的憑據登錄登錄視圖。不容禁用後退按鈕(歷史,緩存,...)在離子

這是我的index.html:

<!DOCTYPE html> 
<html ng-app="starter"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title>Services for Partners</title> 

    <link href="lib/ionic/css/ionicons.min.css" rel="stylesheet"> 
    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above 
    <link href="css/ionic.app.css" rel="stylesheet"> 
    --> 

    <!-- cordova script (this will be a 404 during development) --> 
    <script src="cordova.js"></script> 

    <!-- your app's css and js --> 
    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
    <script src="js/routes.js"></script> 
    <script src="js/services.js"></script> 

    <link href="css/app.css" rel="stylesheet"> 

    </head> 
    <body> 
    <div> 
     <ion-nav-view animation="slide-right-left" cache-view="false"></ion-nav-view> 
    </div> 
    <div class="bar bar-footer bar-dark"> 
     <div>copyright</div> 
    </div>  
    </body> 
</html> 

在我的index.html我使用的屬性緩存視圖= 「假」。

用戶登錄後,他重定向到主視圖。

這裏是我的家視圖的一部分:

<ion-view title="home" ng-controller="homeCtrl"> 
    <div class="bar bar-header bar-dark"> 
     <button class="button button-icon icon ion-gear-b"></button> 
     <button class="button button-icon icon ion-android-close" ng-click="closeApp()"></button> 
    </div> 
    <ion-content overflow-scroll="true" padding="true" scroll="true" class="has-header has-footer"> 
     <!--<div class="spacer" style="width: 300px; height: 15px;"></div>--> 
     <div style="text-align:center;"> 
      <img src="img/logo.png" class="logo-pequena"> 
     </div>   
     <div> 

在家庭觀,我有一個按鈕來退出,調用一個方法closeApp()。

這裏是我的家控制器,與我closeApp()方法:

starter.controller('homeCtrl', ['$scope', '$state', '$ionicHistory', function($scope, $state, $ionicHistory) { 

    $scope.closeApp = function() { 

     //Remove todos as infos do usuário do localStorage 
     localStorage.clear(); 

     $ionicHistory.clearHistory(); 
     $ionicHistory.clearCache(); 
     $ionicHistory.nextViewOptions({ 
      historyRoot: true, 
      disableAnimate: true, 
      disableBack: true 
     }); 

     $state.go('login'); 
    } 

}]); 

在這裏我們可以看到,我用幾個命令禁用離子歷史。

下面,是我services.js文件:

var starter = angular.module('starter.services', []); 

starter.run(function($ionicPlatform,$state,$ionicHistory){ 

    $ionicPlatform.registerBackButtonAction(function (event) { 
     if($state.current.name=="home"){ 
      navigator.app.exitApp(); 
     } 
     else { 
      $ionicHistory.backHistory(); 
     } 
    }, 100); 
}); 

這裏是我的route.js文件:

var starter = angular.module('starter.routes', []); 

//Rotas do app 
starter.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
    function($stateProvider, $urlRouterProvider, $locationProvider) { 

    $stateProvider //.state(...).state(...).state(...) 

    //Login 
    .state('login', { 
     url: '/login', 
     cache: false, 
     templateUrl: 'templates/login.html', 
     controller: 'loginCtrl' 
    }) 

    //Novo Usuário 
    .state('newuser', { 
     url: '/newuser', 
     cache: false, 
     templateUrl: 'templates/newuser.html', 
     controller: 'newUserCtrl' 
    }) 

    //Esqueceu a senha 
    .state('forgotpwd', { 
     url: '/forgotpwd', 
     cache: false, 
     templateUrl: 'templates/forgotpwd.html', 
     controller: 'forgotPwdCtrl' 
    }) 

    //Sobre 
    .state('about', { 
     url: '/about', 
     cache: false, 
     templateUrl: 'templates/about.html', 
     controller: 'aboutCtrl' 
    }) 

    //Home 
    .state('home', { 
     url: '/home', 
     cache: false, 
     templateUrl: 'templates/home.html', 
     controller: 'homeCtrl' 
    }); 

    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise('/login'); 

}]); 

這裏沒有任何緩存鑑於我已經配置的所有路由。

畢竟這些東西什麼都沒有發生。我的應用程序仍然允許我點擊後退按鈕(不是硬件按鈕,而是軟件按鈕)。我正在我的索尼Z3智能手機上運行的「Ionic View App」上預覽我的應用程序。

所以,如果用戶點擊登錄時視圖返回按鈕,用戶可以回到主頁,無需登錄。

我想退出應用程序。但在所有這些配置之後,我仍然遇到這個麻煩。

我需要做什麼?

我已經更新科爾多瓦和離子。這是一個錯誤還是可以解決這個問題?

謝謝。

+0

在登陸HTML,您可以設置'<離子視圖捉迷藏後退按鈕=「真」>'欲瞭解更多信息,請參閱本文檔[鏈接](http://ionicframework.com/docs/api/directive/ionView/) – Webruster

+0

你應該做的是註銷清除應用程序的歷史使用$ ionicHistory。請參閱http://ionicmobile.blogspot.in/2015/05/ionic-clear-history.html鏈接以清除歷史記錄。 – Rahul

回答

0

你爲什麼不試試這個

///code to skip login page if logged in 
.run(function ($rootScope, $state) { 
    // Check login session 
    $rootScope.$on('$stateChangeStart', function (event, next, current) { 

     if(condition to check that you are logged in..maybe store token in localstorage and heck){ 
      if (next.name === "login") { 
       event.preventDefault(); 
       $state.go('home'); 
      } 

     } 


    }); 
}) 

的後退按鈕動作

.run(['$rootScope', '$ionicPlatform','$state', '$ionicHistory', 
     function($rootScope, $ionicPlatform,$state, $ionicHistory){ 
     $ionicPlatform.registerBackButtonAction(function(e){ 

    if ($state.current.name == 'home') { 
     ionic.Platform.exitApp(); 

    } 
    else if ($ionicHistory.backView()) { 
     $ionicHistory.goBack(); 
    } 
    e.preventDefault(); 
    return false; 
    },101); 

}])