Deklarieren Sie den AngularJS-Dienst mehrmals im selben Modul

9

Ich arbeite mit AngularJS 1.x und ich kann den gleichen Dienst mehrmals im selben Modul definieren. Im folgenden Codeschnipsel definiere ich den Service nameService 2 mal im Modul myApp :

%Vor%

Zur Laufzeit verwendet AngularJS den von der zweiten Implementierung des Dienstes zurückgegebenen Wert: "Second Definition". Überprüfen Sie das Plunker-Beispiel .

Also scheint AngularJS empirisch immer die neueste Definition eines Dienstes zu verwenden und ignoriert die vorherigen.

Meine Frage ist: Gibt es eine offizielle Dokumentation, die dieses Verhalten beschreibt?

    
Andrea 26.10.2016, 09:31
quelle

4 Antworten

1

Hier überschreiben Sie die Definition von Factory / Service. Factory / Service ist Singleton, d. h. es wird nur eine Instanz geben.

%Vor%

Ihr Fall,

%Vor%     
ram1993 26.10.2016 09:48
quelle
1

So funktioniert JavaScript:

%Vor%

Wenn Sie console.log(Vinoth()); eingeben, wird immer Second eins ausgegeben. Zu deinem zweiten Teil:

%Vor%

AngularJS-Dienste sind von Natur aus singleton , also wird es eine Instanz über den gesamten Anwendungslebenszyklus hinweg sein. Ihre nameService1 and nameService2 zeigen auf dieselbe nameService instance . Technisch ist es nameService hält nameService2 wie es nach dem Heben vorausgeht.

    
Thalaivar 26.10.2016 10:06
quelle
0

Nein, es gibt keine offizielle Dokumentation für diese Funktion.

Wenn Sie möchten, dass Sie dort sind, können Sie die Betreuer von angularjs bitten, eine Dokumentation für diese Funktion hinzuzufügen.

    
Bob Brinks 26.10.2016 13:11
quelle
0

Sie müssen den Service (Inject) nicht zweimal definieren. Bessere Lösung ist, Sie definieren den Service einmal. Und verwende wie,

%Vor%

Darin können wir diesen Dienst wie

verwenden %Vor%

Dies ist für die beste Vorgehensweise.

    
Satzz 28.10.2017 14:11
quelle

Tags und Links