ユーザーがログインに成功したときにトークン値を設定するイオンアプリを作成しました。次に、$ 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 {
}
})