我正在试图找出为什么Angular在我未在任何地方声明的提供商上给我以下错误。
错误:$ injector:unpr
未知提供者:dblServiceProvider< -
这是我工厂的骨架:
angular.module('fv.services', [])
.factory('dblService', function($q, $http) {
this.getAll = function() {
var deferred = $q.defer();
var responsePromise = $http.post(URL, POSTPARAMS)
.success( function(data, status, header, config) {
// do something
})
return deferred.promise;
};
return {
getAll: getAll()
};
});
我尝试在控制器中实例化该服务,这就是触发上述错误的地方。
.controller('searchCtrl', ['lotsOfInjections', 'dblService', function(lotsOfInjections, dblService) {
// do something
}]);
为什么Angular会附加“Provider”并寻找我尚未声明的提供商?
答案 0 :(得分:4)
因为所有服务都是由提供者创建的,并且服务提供者始终是服务名称,后跟" Provider"。
使用工厂定义服务foo
时,Angular实际上会创建一个提供程序fooProvider
,它委托工厂创建服务实例。此提供程序存储在服务提供程序的注册表中。当另一个组件需要服务foo
时,angular会在其注册表中查找fooProvider
。