Ich arbeite mit AngularJS 1.x und ich kann den gleichen Dienst mehrmals im selben Modul definieren. Im folgenden Code-Snippet, ich bin die Definition des Service nameService
2 mal in Modul myApp
:Deklarieren AngularJS-Service mehrmals im selben Modul
(function() {
'use strict';
angular
.module('myApp', [])
.controller('MainController', MainController)
.factory('nameService', nameService1)
.factory('nameService', nameService2);
MainController.$inject = ['nameService'];
function MainController(nameService) {
var vm = this;
vm.message = nameService.getName();
}
function nameService1() {
return {
getName: getName
};
function getName() {
return 'First Definition';
}
}
function nameService2() {
return {
getName: getName
};
function getName() {
return 'Second Definition';
}
}
})();
Zur Laufzeit wird verwenden AngularJS den Wert durch die zweite Implementierung des Dienstes zurückgegeben: "Second Definition". Bitte überprüfen Sie die this Plunker example.
also empirisch scheint AngularJS immer die neueste Definition eines Service zu nutzen, um die vorherigen zu ignorieren.
Meine Frage ist: Gibt es eine offizielle Dokumentation dieses Verhalten beschreiben?
Javascript wird sequentiell kompiliert. Wenn es den 2. nameService findet, überschreibt es den vorherigen – aliasav
Nun, JavaScript kann sequentiell kompilieren, aber es ist das Angular Framework, das entscheidet, wenn eine zweite Definition eines bereits definierten Dienstes gefunden wird. Es könnte zum Beispiel beschließen, immer die erste Instanz zu behalten und die anderen zu verwerfen, im Gegenteil, es scheint immer die letzte zu behalten. Meine Frage ist: Gibt es offizielle Dokumentation über dieses Verhalten? – Andrea