2016-07-13 5 views
0

Я пытаюсь определить константу и ввести ее в заводскую. Моя постоянная определяется следующим образом:

angular.module("ContactApp").constant("BaseApiURL", "http://localhost:31523/api/"); 

Моя фабрика определяется как:

angular.module("ContactApp").factory('CustomerService', CustomerService); 

//CustomerService.$inject = ['BaseApiURL']; Giving Error when this line is active. 

function CustomerService(BaseApiURL, $resource) { 

    return $resource(BaseApiURL + 'Customers'); 
}; 

Приведенный выше код работает, но я не нужно вводить константу, как зависимость в фабричный метод? Я могу вставить константу, используя $ injection в контроллер, но не мог сделать это на фабрике.

+0

В чем проблема с этим методом? –

+0

, насколько мне известно, нам нужно внедрить любую услугу, прежде чем использовать ее в любом контроллере, аналогично, я думал, что мне нужно вставить константу, прежде чем использовать ее в заводском методе, поэтому я попытался ввести ее с помощью CustomerService. $ Injection = [ 'BaseApiURL']; Но тогда код перестает работать. Я искал объяснения. –

+0

Какая ошибка у вас возникла? –

ответ

1

Угловая зависимость, если вы не делаете аннотации зависимостей (например, установка $ inject), угловое будет предполагать, что имена параметров функции являются именами зависимостей.

Но не полагайтесь на эту функцию, так как это вызовет проблему при попытке минимизировать код.

Поэтому наилучшей практикой должно быть аннотация для зависимостей везде, где есть инъекция зависимости.

Btw u может установить $ inject на заводе, но, возможно, вы должны позвонить CustomerService.$inject = ['BaseApiURL','$resource']; в ваш случай.

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