【问题标题】:Check localstorage value and pass parameters at state.go in IONIC在 IONIC 中的 state.go 中检查 localstorage 值并传递参数
【发布时间】:2016-03-20 04:31:44
【问题描述】:

我创建了一个 ionic 应用程序,该应用程序将在用户成功登录时设置令牌值。然后,它将利用 $state.go 将用户重定向到另一个选项卡“tab.scan”。

当用户点击导航栏的“tab.details”选项卡时,它会将用户重定向到“tab.details”而不传递任何参数。

但是,“详细信息”页面无法获取存储令牌的值。 我该怎么做呢?

当 url 是 url: '/details' 而不是 url: '/details/:store_id/:invoice_id' 时,它可以正常工作。

登录代码

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

标签代码

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

细节控制器代码

.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 {
    }
})

【问题讨论】:

    标签: php android angularjs cordova ionic-framework


    【解决方案1】:

    $scope 是相对于每个控制器的,除非 login 是父状态 $scope 不会级联到子状态。您需要在可以从任何控制器调用的服务中设置令牌,或者您可以在 $rootScope 上设置它,以便它在任何地方都可用。是否要使用 $rootScope 将 $scope.token 更改为 $rootScope.token。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多