2016-09-12 2 views
0

Я хочу загрузить первую услугу, затем контроллер в угловых 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; 
    } 
}) 
+0

пройдите эту ссылку один раз. http://stackoverflow.com/questions/16286605/angularjs-initialize-service-with-asynchronous-data – optimus

ответ

0

Inject вашу службу к контроллеру, и он должен работать нормально.

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; 
     } 
}]); 

Это обеспечит ваше обслуживание. Попробуйте выполнить одну и ту же инъекцию зависимостей для вашего сервиса, что обеспечивает правильную инициализацию сервиса.

+0

Это моя конфигурация контроллера. –

+0

'app.controller ('headerControl', function ($ scope, $ rootScope, $ stateParams, $ location, $ localStorage, $ http, $ cookies, Auth, $ sessionStorage, toastr, dataFactory, $ ocLazyLoad) {' –