2016-10-09 86 views
-1

得到這個錯誤 「錯誤:[$注射器:CDEP]圓形依賴發現:$餅乾< - $餅乾< - AuthService」

與下面的代碼

'use strict'; 

angular. 
    module('core.auth'). 
    factory('AuthService', [ '$http', '$rootScope', 'ConfigService', '$cookies', 
    function AuthService($http, $rootScope, ConfigService, $cookies) { 
     const service = {}; 

     service.Login = Login; 
     service.SetCredentials = SetCredentials; 
     service.ClearCredentials = ClearCredentials; 

     return service; 

     function Login(username, password, callback) { 
     $http.post(ConfigService.LOGIN_API, { username: username, password: password }) 
      .success(function (response) { 
       callback(response); 
      }); 
     } 

     function SetCredentials(username) { 
     $rootScope.globals = { 
      currentUser: { 
      username: username 
      } 
     }; 

     $cookies.put('globals', $rootScope.globals); 
     } 

     function ClearCredentials() { 
     $rootScope.globals = {}; 
     $cookies.remove('globals'); 
     } 
    } 
]); 

,我在登錄組件使用這項服務,什麼是錯我的代碼...如果從這裏取出$餅乾,它的工作完美

'use strict'; 

angular. 
    module('login'). 
    component('login', { 
    templateUrl: 'dist/components/login/login.template.html', 
    controller: ['$location', 'AuthService', '$log', 
     function LoginController($location, AuthService, $log) { 

     (function initController() { 
      // reset login status 
      AuthService.ClearCredentials(); 
     }()); 

     this.login =() => { 
      AuthService.Login(this.username, this.password, (response) => { 
      if (response.success) { 
       $log.log(response); 
       $log.log('Login successful', true); 
       AuthService.SetCredentials(this.username); 
       $location.path('#!/products'); 
      } else { 
       $log.log(response) 
      } 
      }) 
     } 

     } 
    ], 

    controllerAs: 'vm' 
}); 

無法理解。也許解決方案是編寫自己的cookie服務? :)

+0

如果沒有看到您的其他服務,很難診斷您的問題。如果您需要時間並將問題隔離在Plnkr中,網站上的某個人可能會幫助您找出問題所在。 – mcranston18

+0

也許我爲此目的使用了錯誤的工具。我解決了問題,只是取代了ngCookies - > ngStorage。工作好:) – vanless

回答

0

循環依賴始終是混合的擔憂,這是AngularJS的作者一個非常糟糕的thing.One的跡象,說明一個很好的解決方案on his awesome blog。簡而言之,您可能在某處隱藏了第三項服務,這是您的代碼中唯一真正需要的部分。