2016-07-13 9 views
0

Ich versuche eine Konstante zu definieren und diese in eine Fabrik zu injizieren. My Constant ist wie folgt definiert:

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

Mein Werk ist wie folgt definiert:

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

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

function CustomerService(BaseApiURL, $resource) { 

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

Der obige Code funktioniert, aber nicht ich brauche die Konstante als Abhängigkeit in die Factory-Methode zu injizieren? Ich kann die Konstante injizieren, indem ich den $ inject in einen Controller injiziere, dies aber nicht in die Fabrik tun kann.

+0

Was ist Ihr Problem mit diesem Ansatz? –

+0

nach meinem Wissen, wir müssen jeden Dienst vor der Verwendung in jedem Controller injizieren, ähnlich wie ich dachte, ich muss die Konstante vor der Verwendung in die Fabrik-Methode injizieren, also habe ich versucht, es mit CustomerService injizieren. $ Inject = [ 'BaseApiURL']; Aber dann hörte der Code auf zu arbeiten. Ich habe nach der Erklärung gesucht. –

+0

Welchen Fehler haben Sie bekommen ..? –

Antwort

1

In Angulars Abhängigkeitsinjektion, wenn Sie keine Abhängigkeitsannotation (wie Einstellung. $ Inject) durchführen, wird angular davon ausgegangen, dass die Namen der Funktionsparameter die Namen der Abhängigkeiten sind.

Verlassen Sie sich jedoch nicht auf diese Funktion, da dies zu Problemen beim Versuch führt, Ihren Code zu minimieren.

Also die beste Praxis sollte Abhängigkeit Annotation tun, wo immer die Abhängigkeit injiziert wird.

Btw Sie können $ inject in Fabrik setzen, aber vielleicht sollten Sie CustomerService.$inject = ['BaseApiURL','$resource']; in Ihrem Fall anrufen.

Verwandte Themen