【问题标题】:Load service then angular controller加载服务然后角度控制器
【发布时间】:2016-09-12 13:58:43
【问题描述】:

我希望在 Angular js 中加载第一个服务,然后是控制器。但是当它第一次加载时,服务变量是空的。 这是我的服务代码

app.service('Auth', function($http, $rootScope, $cookies, $sessionStorage, $location, dataFactory) {
    var auth = {};
    $sessionStorage.logincheck1 = 0;
    auth.is_login_sim_v2 = function() {
        if ($sessionStorage.logincheck1 == 0) {
            var a = document.cookie.substr(10);
            var a1 = a.split(";");
            dataFactory.post_api('users/loginchecking', {
                'session_id': a1[0]
            }).then(function(resultChech) {
                //console.log(resultChech);
                $sessionStorage.logincheck1 = 1;
                $sessionStorage.edgar_id = resultChech.checking_id;
                $rootScope.$broadcast('Auth:isLoginSuccess');
                //console.log($sessionStorage.edgar_id);
                if ($sessionStorage.edgar_id === undefined) {
                    console.log('1');
                    return false;
                } else if ($sessionStorage.edgar_id == 'undefined') {
                    console.log('2');
                    return false;
                } else if ($sessionStorage.edgar_id == '') {
                    console.log('3');
                    return false;
                } else {
                    console.log('4');
                    return $sessionStorage.edgar_id;
                }
            });
        } else if ($sessionStorage.logincheck1 == 1) {
            //console.log(document.cookie.substr(10));
            if ($sessionStorage.edgar_id === undefined) {
                return false;
            } else if ($sessionStorage.edgar_id == '') {
                return false;
            } else {
                return $sessionStorage.edgar_id;
            }
        }
    }
})

这是我的控制器代码:

$scope.$on('Auth:isLoginSuccess', function() {
    // calculation based on service value
    console.log(Auth.is_login_sim_v2());
    console.log($sessionStorage.edgar_id);

    if (Auth.is_login_sim_v2() == false) {
        $scope.isLoggedIn=false;
    } else if(Auth.is_login_sim_v2() === undefined){
        $scope.isLoggedIn=false;
    } else{
        $scope.isLoggedIn=true;
    }
})

【问题讨论】:

标签: javascript jquery angularjs


【解决方案1】:

将您的服务注入控制器,它应该可以正常工作。

app.controller('YourController',['$scope', '$rootScope', '$stateParams',
  '$location', '$localStorage', '$http', '$cookies', 'Auth',
  '$sessionStorage', 'toastr','dataFactory','$ocLazyLoad',
   function($scope, $rootScope, $stateParams, $location, $localStorage,
     $http, $cookies, Auth,
     $sessionStorage, toastr,dataFactory,$ocLazyLoad){
       //Your code
       // calculation based on service value
       console.log(Auth.is_login_sim_v2());
       console.log($sessionStorage.edgar_id);

       if (Auth.is_login_sim_v2() == false) {
          $scope.isLoggedIn=false;
       } else if(Auth.is_login_sim_v2() === undefined){
          $scope.isLoggedIn=false;
       } else{
          $scope.isLoggedIn=true;
       }
}]);

这将确保您的服务可用。尝试为您的服务执行相同的依赖注入,以确保服务正确初始化。

【讨论】:

  • 这是我的控制器配置。
  • app.controller('headerControl', function ($scope, $rootScope, $stateParams, $location, $localStorage, $http, $cookies, Auth, $sessionStorage, toastr,dataFactory,$ocLazyLoad) {
猜你喜欢
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多