2016-04-15 6 views
5

में लॉग इन है हाय मैं आयनिक ढांचे के लिए नया हूं। मैं आयनिक में सत्र प्रबंधक का उपयोग कर रहा हूँ। लेकिन मैं प्रवेश पृष्ठ को छोड़ने के लिए ही उपयोगकर्ता पहले में लॉग ऑन है चाहता हूँ।लॉगिन पेज को कैसे छोड़ें यदि उपयोगकर्ता पहले से ही ionic

app.js

angular.module('grocery', ['ionic', 'grocery.controller', 'ngCordova', 'ngCordovaOauth']) 

.run(function($ionicPlatform, $cordovaSQLite, $cordovaToast, $rootScope, mainItemsList, $state) { 
    $ionicPlatform.ready(function() { 
     if (window.cordova && window.cordova.plugins.Keyboard) { 

      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 

      stops the viewport 
      // from snapping when text inputs are focused. Ionic handles this internally for 
      // a much nicer keyboard experience. 
      cordova.plugins.Keyboard.disableScroll(true); 
     } 
     if (window.StatusBar) { 
      StatusBar.styleDefault(); 
     } 

    }); 


}); 


$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) { 
    if (mainItemsList.isLoggedIn() != true) { 
     $state.go('app.login'); 
    } 



}) 


.config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
     .state('app', { 
      url: "/app", 
      abstract: true, 
      templateUrl: "templates/navigationDrawer.html", 
      controller: 'AppCtrl' 
     }) 

    .state('app.masterList', { 
     url: "/masterList", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/masterList.html", 
       controller: 'indexCtrl' 
      } 
     } 
    }) 


    .state('app.login', { 
     url: "/login", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/login.html", 
       controller: 'loginCtrl' 
      } 
     } 
    }) 

    .state('app.register', { 
     url: "/register", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/register.html", 
       controller: 'registerCtrl' 
      } 
     } 
    }) 


    $urlRouterProvider.otherwise("/app/masterList"); 


}); 


angular.module('grocery.services', []) 
    .factory('mainItemsList', function($cordovaSQLite, $cordovaToast, $cordovaPreferences) { 
     return { 
      isLoggedIn: function(sessionEmail) { 

       $cordovaPreferences.store('email', sessionEmail).success(function(value) { 
         //$cordovaToast.showShortTop('stored'); 
        }) 
        .error(function(error) { 
         $cordovaToast.showShortTop("Error " + error); 
        }) 


       return true; 
      } 


     } 
    }) 

मैं मौजूदा stackoverflow जवाब की कोशिश की। लेकिन काम नहीं कर रहा है। कृपया मेरी मदद करें जहां मैं गलत हूं।

+0

का उपयोग करके इस संभाल pages.So के बीच झिलमिलाते के लिए एक मौका हो जाएगा मुझे लगता है कि 'app.login' स्थिति में 'हल' संपत्ति का उपयोग करने से चाल – Yogesh

उत्तर

0

एक नया नियंत्रक और autologin नामक एक नया राज्य बनाएं। इसे अपनी डिफ़ॉल्ट स्थिति बनाएं। autologin नियंत्रक में, जांचें कि उपयोगकर्ता पहले से लॉग इन है या नहीं। यदि वह है, तो कुछ पेज पर रीडायरेक्ट करें। यदि वह नहीं है, तो लॉगिन करने के लिए रीडायरेक्ट करें।

.state('app.autologin', { 
    url: "/autologin", 
    controller: 'autologinCtrl' 
    }) 

$urlRouterProvider.otherwise("/app/autologin"); 

नियंत्रक:

angular.module('grocery').controller('autologinCtrl, function($scope, $state){ 
    //check if user is logged in 
    if (userLoggedIn){ 
     state.go('app.masterList'); 
    } else { 
     state.go('app.login'); 
    } 
}); 
+0

त्वरित प्रतिक्रिया के लिए धन्यवाद करेगी। लेकिन यह काम नहीं कर रहा है। –

+0

आपको $ रूटस्कोप से छुटकारा पाने की भी आवश्यकता है। $ '(' $ LocationChangeStart '... क्योंकि यह – fikkatra

+0

हस्तक्षेप करेगा लेकिन अभी भी काम नहीं कर रहा है। –

0

आप इस तर्क के लिए एक नया controller जोड़ रहे हैं, वहाँ $urlRouterProvider

.config(function($stateProvider, $urlRouterProvider, mainItemsList) { 
    $stateProvider 
     .state('app', { 
      url: "/app", 
      abstract: true, 
      templateUrl: "templates/navigationDrawer.html", 
      controller: 'AppCtrl' 
     }) 

    .state('app.masterList', { 
      url: "/masterList", 
      views: { 
       'menuContent': { 
        templateUrl: "templates/masterList.html", 
        controller: 'indexCtrl' 
       } 
      } 
     }) 
     .state('app.login', { 
      url: "/login", 
      views: { 
       'menuContent': { 
        templateUrl: "templates/login.html", 
        controller: 'loginCtrl' 
       } 
      } 
     }) 

    .state('app.register', { 
     url: "/register", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/register.html", 
       controller: 'registerCtrl' 
      } 
     } 
    }); 
    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise(function() { 
     var logged = mainItemsList.isLoggedIn(); 
     // Check User logined or not 
     if (logged != true) { 
      return 'app.login'; 
     } else { 
      return 'app.masterList'; 
     } 

    }); 


}); 
संबंधित मुद्दे