2015-08-12 2 views
2

Я пытаюсь понять, почему Angular дает мне следующую ошибку на провайдере, которого я нигде не объявлял.Почему Angular добавляет «Provider» к моему имени службы?

Error: $injector:unpr
Unknown provider: 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» и ищет поставщика, которого я не объявлял?

+1

ошибка означает, что он может найти ваш завод с именем, которое предшествует '' провайдер'' – charlietfl

+0

FYI, '' $ q'' и '' $ http'' ** не ** модули, поэтому их следует удалить из вашего 'зависимый массив' fv.services' – Phil

+0

Вам также не хватает запятой после '' lotsOfInjections'' – Phil

ответ

4

Поскольку все службы создаются поставщиком, а поставщиком услуги всегда является имя службы, за которым следует «Поставщик».

Когда вы определяете услугу foo с использованием фабрики, Угловая на самом деле создает поставщика fooProvider, который делегирует фабрике создание экземпляра службы. Этот провайдер хранится в реестре поставщиков услуг. Когда другой компонент нуждается в услуге foo, угловой ищет fooProvider в своем реестре.

Смежные вопросы