我正在嘗試重構我的AngularJS應用程序並引入登錄服務。目前我的控制器有如login()
,logout()
,getCurrentUser()
等方法,它們會發出http請求並處理用戶對象。我想將這些函數轉換爲服務,因爲我需要從多個控制器中調用getCurrentUser()
方法。在AngularJS中編寫登錄服務
我寫了下面的服務:
angular.module('common.login', []).
factory('loginService', function ($http) {
return {
user: null,
error: null
};
});
所以此刻的服務沒有做任何事情。然而我得到一個錯誤:
Uncaught Error: Circular dependency: loginService <- $http
如果我從回調函數中刪除$ http依賴項,那麼該服務的工作。我很難理解爲什麼存在循環依賴。 loginService
工廠被注入到兩個位置:A **主模塊的配置回調**和一個**登錄模塊的控制器回調**。配置回調配置一個http攔截器,登錄控制器也使用http服務。
你好lanoxx。請發佈您的控制器簽名,以瞭解DI問題。 – blint
我幾乎建議在rootScope上而不是作爲服務使用這個函數。 – Mindstormy