2016-11-27 60 views
1

我有一個模塊'moduleA',它有兩個服務,一個(serviceB)取決於另一個(serviceA)。我試圖將serviceB注入屬於不同模塊'foo'的控制器,但是我得到了未知的提供者錯誤。下面是我的代碼:AngularJS將多個服務模塊注入控制器時出現未知提供程序錯誤

module.js

angular.module('moduleA', []); 

工廠a.js

angular 
.module('moduleA') 
.factory('factoryA', factoryA); 

factoryA.$inject = ['$q', '$log', '$timeout']; 

function factoryA($q, $log, $timeout) { 
//Do Stuff 
} 

工廠b.js

angular 
.module('moduleA') 
.factory('factoryB', factoryB); 

factoryB.$inject = ['factoryA']; 

function factoryB(factoryA) { 
//Do Stuff 
} 

富-controller.js

angular.module('foo', ['moduleA']) 
     .controller('fooController', ['factoryB', function(factoryB){ 
//Do Stuff 
}) 

錯誤控制檯:

generic-console-medium.js:23 2016-11-27 18:49:42.395 - [$injector:unpr] Unknown provider: factoryBProvider <- factoryB <- fooController 
http://errors.angularjs.org/1.5.5/$injector/unpr?p0=factoryBProvider%20%3C-%20factoryB%20%3C-%20fooController Error: [$injector:unpr] Unknown provider: factoryBProvider <- factoryB <- fooController 
http://errors.angularjs.org/1.5.5/$injector/unpr?p0=factoryBProvider%20%3C-%20factoryB%20%3C-%20fooController 

at http://localhost:9001/components/angular/angular.js:68:12 

at http://localhost:9001/components/angular/angular.js:4458:19 

at Object.getService [as get] (http://localhost:9001/components/angular/angular.js:4611:39) 

at http://localhost:9001/components/angular/angular.js:4463:45 

at getService (http://localhost:9001/components/angular/angular.js:4611:39) 

at injectionArgs (http://localhost:9001/components/angular/angular.js:4635:58) 

at Object.invoke (http://localhost:9001/components/angular/angular.js:4657:18) 

at $controllerInit (http://localhost:9001/components/angular/angular.js:10115:34) 

at nodeLinkFn (http://localhost:9001/components/angular/angular.js:9033:34) 
    at http://localhost:9001/components/angular/angular.js:9433:13 
+0

可以,請您發佈錯誤信息(來自控制檯的文本)嗎? – lealceldeiro

+0

@AsielLealCeldeiro更新了控制檯錯誤,謝謝! – doranT

回答

2

這聽起來微不足道,但你有你的工廠b.js文件在您的項目?

我認爲你應該修復下面顯示的代碼。除此之外,一切看起來都很好。

function factoryA($q, $log, $timeout) { //remove the '' 
//Do Stuff 
} 
+0

感謝您指出,這是一個錯字,我已經刪除了上面代碼中的引號。我在項目中使用requireJS,我只在我的控制器中包含module.js,看起來我需要包含module.js和factory-b.js以使其工作。 – doranT

相關問題