AngularJS bietet Dienste, die wiederverwendbare Singleton-Objekte sind. Sie können verwendet werden, um den Code über die AngularJS-Anwendungen der Benutzer zu teilen. Sie können auch in Direktiven, Filter und Controller injiziert werden. In diesem Artikel werden wir die Factory in AngularJS verstehen.
- Was ist Factory in AngularJS?
- Unterschied zwischen Service und Factory
- Beispiel für Factory in JavaScript
Was ist Factory in AngularJS?
Factory ist eine Angular-Funktion, die verwendet wird, um die Werte zurückzugeben. Ein Wert auf Anfrage wird von der Factory erstellt, wenn ein Dienst oder Controller ihn benötigt. Sobald der Wert erstellt ist, wird er für alle Dienste und Controller wiederverwendet.
Wir können die Factory verwenden, um einen Dienst zu erstellen.
Unterschied zwischen Service und Factory
- Ein Service kann auf folgende Weise definiert werden:
app.service('FirstService', function () {
this.sayHola = function () {
console.log('Hola');
};
});
The .service() method takes the name and the function that defines the service. We can inject it in the following way:
app.controller('AppController', function (FirstService) {
FirstService.sayHola(); // logs 'Hola'
});
- Eine Fabrik, kann dagegen wie folgt definiert werden:
app.factory('FirstService', function () {
return {
sayHola: function () {
console.log('Hola');
}
}
});
factory() ist ebenfalls eine Methode, die einen Namen und eine Funktion nimmt, die die Fabrik definiert. Wir können sie auf die gleiche Weise injizieren wie einen Dienst. Der Hauptunterschied zwischen einem Dienst und einer Fabrik besteht darin, dass wir im Fall der Fabrik ein Objektliteral zurückgeben (anstatt this zu verwenden). Der Grund dafür ist, dass service eine Konstruktorfunktion ist, während factory keine ist.
- Zum besseren Verständnis sehen wir uns die Funktion factory() an:
function factory(name, factFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn
});
}
Im obigen Code nimmt sie den Namen und die übergebene factory-Funktion. Er gibt einen Anbieter mit demselben Namen zurück, zusammen mit einer $get
-Methode (die die Fabrikfunktion ist). Der Grund dafür ist, dass der Injektor immer dann, wenn er nach einer bestimmten Abhängigkeit gefragt wird, den Anbieter nach einer Instanz dieses Dienstes fragt, indem er die Methode $get()
aufruft.
- Bei der Injektion von FirstService werden die Factory-Funktionen aufgerufen:
FirstServiceProvider.$get(); // return the instance of the service
- Für den Service-Code:
function service(name, constructor) {
return factory(name, );
}
Bei dem Aufruf von service(), factory()
handelt es sich um die Funktion, die tatsächlich aufgerufen wird. Dies geschieht durch Übergabe einer Funktion, die den Injektor auffordert, ein Objekt durch den Konstruktor zu instanziieren. Vereinfacht ausgedrückt, ruft der Dienst eine vordefinierte Fabrik auf.
$injector.instantiate()
ruft die Object.create()
mit der Konstruktorfunktion auf. Das ist der Grund, warum dies in Diensten verwendet wird.
Beispiel für Factory in JavaScript
var firstModule = angular.module("firstModule", );
firstModule.factory("firstFactory", function() {
return "a value";
});
firstModule.controller("FirstController", function($scope, firstFactory) {
console.log(firstFactory);
});
Werte in Factory injizieren
Ein Wert kann mit der folgenden Methode in Factory injiziert werden:
var firstModule = angular.module("firstModule", );
firstModule.value("numberValue", 29);
firstModule.controller("FirstController", function($scope, numberValue) {
console.log(numberValue);
});
Hinweis: Es ist zu beachten, dass der von der Factory-Funktion erzeugte Wert injiziert wird, nicht die Factory-Funktion selbst.
Damit kommen wir zum Ende dieses Factory in AngularJS Artikels. Ich hoffe, Sie haben verstanden, was genau eine Factory ist und wie sie sich von einem Service unterscheidet.
Sehen Sie sich das Angular-Training von Edureka an, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Angular ist ein JavaScript-Framework, das verwendet wird, um skalierbare, unternehmensweite und leistungsstarke Client-seitige Webanwendungen zu erstellen. Durch die hohe Akzeptanz des Angular-Frameworks wird das Leistungsmanagement der Anwendung von der Gemeinschaft getragen, was indirekt zu besseren Beschäftigungsmöglichkeiten führt. Das Angular-Zertifizierungstraining zielt darauf ab, all diese neuen Konzepte rund um die Entwicklung von Unternehmensanwendungen abzudecken.