Es gibt drei Möglichkeiten, Geschäftslogik in AngularJS zu behandeln: ( Inspiriert von Yaakovs Coursera-Kurs AngularJS ), die sind:
- Dienst
- Fabrik
- Anbieter
Hier werden wir nur über Folgendes sprechen Dienst gegen Fabrik
SERVICE :
Syntax:
app.js
var app = angular.module('ServiceExample',[]);
var serviceExampleController =
app.controller('ServiceExampleController', ServiceExampleController);
var serviceExample = app.service('NameOfTheService', NameOfTheService);
ServiceExampleController.$inject = ['NameOfTheService'] //very important as this protects from minification of js files
function ServiceExampleController(NameOfTheService){
serviceExampleController = this;
serviceExampleController.data = NameOfTheService.getSomeData();
}
function NameOfTheService(){
nameOfTheService = this;
nameOfTheService.data = "Some Data";
nameOfTheService.getSomeData = function(){
return nameOfTheService.data;
}
}
index.html
<div ng-controller = "ServiceExampleController as serviceExample">
{{serviceExample.data}}
</div>
Die wichtigsten Merkmale von Service:
-
Faul instanziiert : Wenn der Dienst nicht injiziert wird, wird er nie instanziiert. Um ihn zu verwenden, müssen Sie ihn also in ein Modul injizieren.
-
Singleton : Wenn es in mehrere Module injiziert wird, haben alle nur Zugriff auf eine bestimmte Instanz. Aus diesem Grund ist es sehr praktisch, Daten über verschiedene Controller hinweg gemeinsam zu nutzen.
FACTORY
Lassen Sie uns nun über die Factory in AngularJS sprechen
Werfen wir zunächst einen Blick auf die Syntax :
app.js :
var app = angular.module('FactoryExample',[]);
var factoryController = app.controller('FactoryController', FactoryController);
var factoryExampleOne = app.factory('NameOfTheFactoryOne', NameOfTheFactoryOne);
var factoryExampleTwo = app.factory('NameOfTheFactoryTwo', NameOfTheFactoryTwo);
//first implementation where it returns a function
function NameOfTheFactoryOne(){
var factory = function(){
return new SomeService();
}
return factory;
}
//second implementation where an object literal would be returned
function NameOfTheFactoryTwo(){
var factory = {
getSomeService : function(){
return new SomeService();
}
};
return factory;
}
Nun werden die beiden oben genannten im Controller verwendet:
var factoryOne = NameOfTheFactoryOne() //since it returns a function
factoryOne.someMethod();
var factoryTwo = NameOfTheFactoryTwo.getSomeService(); //accessing the object
factoryTwo.someMethod();
Merkmale der Fabrik:
-
Diese Arten von Dienstleistungen folgen dem Fabrikplanungsmuster . Die Fabrik kann als zentrale Stelle betrachtet werden, die neue Objekte oder Methoden erstellt.
-
So entstehen nicht nur singuläre, sondern auch anpassbare Dienste.
-
En .service()
Methode ist eine Werk die immer dieselbe Art von Dienst erzeugt, nämlich ein Singleton. Es gibt keine einfache Möglichkeit, sein Verhalten zu konfigurieren. Das .service()
Methode wird normalerweise als Abkürzung für etwas verwendet, das keinerlei Konfiguration erfordert.