2016-03-20 7 views
0

ユーザーがログインに成功したときにトークン値を設定するイオンアプリを作成しました。次に、$ state.goを使用して、ユーザーを別のタブ "tab.scan"にリダイレクトします。IONICのlocal.storageの値を確認し、state.goのパラメータを渡します。

ナビゲーションバーの「tab.details」タブをクリックすると、パラメータを渡さずにユーザーを「tab.details」にリダイレクトします。

しかし、「詳細」ページでは、格納されたトークンの値を取得できませんでした。 どうすればいいですか?

url: '/details/:store_id/:invoice_id'ではなく、URLがurl: '/details'の場合は問題ありません。タブ

.state('tab.details', { 
     cache: false, 
     url: '/details/:store_id/:invoice_id', 
     views: { 
     'tab-details': { 
      templateUrl: 'templates/tab-details.php', 
      controller: 'DetailsCtrl' 
     } 
    } 
}) 

コード用

コードログイン

.controller('LoginCtrl', function ($scope, LoginService, $ionicPopup, $state, $stateParams) { 
    $scope.data = {}; 
    $scope.token = { token: "" }; 

    $scope.login = function() { 
     LoginService.loginUser($scope.data.username, $scope.data.password).success(function (data) { 
      //Set login token 
      localStorage.setItem("token", $scope.data.username); 
      //Redirect the user to scan tab 
      $state.go('tab.scan', { store_id: $scope.data.store_id }); 
      //Popup alert for welcome message 
      var alertPopup = $ionicPopup.alert({ 
       title: 'Login Success!', 
       template: 'Welcome ' + localStorage.getItem("token") + '!' 
      }); 
     }).error(function (data) { 
      //Failed login, popup error message 
      var alertPopup = $ionicPopup.alert({ 
       title: 'Login Failed!', 
       template: 'Please check your credentials!' 
      }); 
     }); 
    } 
}) 

のコードをログインが親状態$の範囲である場合を除き、詳細コントローラの

.controller('DetailsController', function ($scope, $http, $state, $ionicPopup, $stateParams) { 
    $scope.token = localStorage.getItem("token"); 
    console.log($scope.token); 
    if ($scope.token == "logOut") { 
     $state.go('login'); 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Login Required!', 
      template: 'Please login to access.' 
     }); 
    } 
    else { 
    } 
}) 

答えて

0

$の範囲は各コントローラに対するものです子の状態にカスケードしません。任意のコントローラから呼び出すことができるサービスでトークンを設定する必要があります。また、$ rootScopeに設定することで、どこでも利用できます。 $ rootScopeを$ scope.tokenから$ rootScope.tokenに変更しますか?

関連する問題