AngularJS
Anbieter
Suche…
Syntax
- Konstante (Name, Wert);
- Wert (Name, Wert);
- factory (name, $ getFn);
- Dienst (Name, Konstruktor);
- Anbieter (Name, Anbieter);
Bemerkungen
Provider sind Einzelobjekte, die zum Beispiel in andere Dienste, Controller und Anweisungen eingefügt werden können. Alle Anbieter werden mit unterschiedlichen "Rezepten" registriert, wobei Provider der flexibelste ist. Alle möglichen Rezepte sind:
- Konstante
- Wert
- Fabrik
- Bedienung
- Anbieter
Dienste, Fabriken und Anbieter werden nur langsam initialisiert. Die Komponente wird nur dann initialisiert, wenn die Anwendung davon abhängig ist.
Dekorateure sind eng mit Anbietern verbunden. Dekorateure dienen dazu, Service- oder Fabrikerstellungen abzufangen, um ihr Verhalten zu ändern oder (Teile davon) zu überschreiben.
Konstante
Constant ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.
angular.module('app',[])
.constant('endpoint', 'http://some.rest.endpoint') // define
.config(function(endpoint) {
// do something with endpoint
// available in both config- and run phases
})
.controller('MainCtrl', function(endpoint) { // inject
var vm = this;
vm.endpoint = endpoint; // usage
});
<body ng-controller="MainCtrl as vm">
<div>endpoint = {{ ::vm.endpoint }}</div>
</body>
Endpunkt = http: //some.rest.endpoint
Wert
Value ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.
angular.module('app',[])
.value('endpoint', 'http://some.rest.endpoint') // define
.run(function(endpoint) {
// do something with endpoint
// only available in run phase
})
.controller('MainCtrl', function(endpoint) { // inject
var vm = this;
vm.endpoint = endpoint; // usage
});
<body ng-controller="MainCtrl as vm">
<div>endpoint = {{ ::vm.endpoint }}</div>
</body>
Endpunkt = http: //some.rest.endpoint
Fabrik
Factory ist in der Run-Phase verfügbar.
Das Factory-Rezept erstellt einen neuen Service unter Verwendung einer Funktion mit null oder mehr Argumenten (dies sind Abhängigkeiten von anderen Services). Der Rückgabewert dieser Funktion ist die Serviceinstanz, die mit diesem Rezept erstellt wurde.
Factory kann einen Dienst eines beliebigen Typs erstellen, sei es ein Primitiv, ein Objektliteral, eine Funktion oder sogar eine Instanz eines benutzerdefinierten Typs.
angular.module('app',[])
.factory('endpointFactory', function() {
return {
get: function() {
return 'http://some.rest.endpoint';
}
};
})
.controller('MainCtrl', function(endpointFactory) {
var vm = this;
vm.endpoint = endpointFactory.get();
});
<body ng-controller="MainCtrl as vm">
<div>endpoint = {{::vm.endpoint }}</div>
</body>
Endpunkt = http: //some.rest.endpoint
Bedienung
Service ist in der Run-Phase verfügbar.
Das Service-Rezept erzeugt einen Service genauso wie die Value- oder Factory-Rezepte, jedoch durch Aufruf eines Konstruktors mit dem neuen Operator . Der Konstruktor kann null oder mehr Argumente annehmen, die die von der Instanz dieses Typs benötigten Abhängigkeiten darstellen.
angular.module('app',[])
.service('endpointService', function() {
this.get = function() {
return 'http://some.rest.endpoint';
};
})
.controller('MainCtrl', function(endpointService) {
var vm = this;
vm.endpoint = endpointService.get();
});
<body ng-controller="MainCtrl as vm">
<div>endpoint = {{::vm.endpoint }}</div>
</body>
Endpunkt = http: //some.rest.endpoint
Anbieter
Provider ist sowohl in der Konfigurations- als auch in der Ausführungsphase verfügbar.
Das Provider-Rezept ist syntaktisch als benutzerdefinierter Typ definiert, der eine
$getMethode implementiert.Sie sollten das Anbieterrezept nur verwenden, wenn Sie eine API für die anwendungsweite Konfiguration verfügbar machen möchten, die vor dem Start der Anwendung erstellt werden muss. Dies ist normalerweise nur für wiederverwendbare Dienste interessant, deren Verhalten zwischen den Anwendungen möglicherweise geringfügig variieren muss.
angular.module('app',[])
.provider('endpointProvider', function() {
var uri = 'n/a';
this.set = function(value) {
uri = value;
};
this.$get = function() {
return {
get: function() {
return uri;
}
};
};
})
.config(function(endpointProviderProvider) {
endpointProviderProvider.set('http://some.rest.endpoint');
})
.controller('MainCtrl', function(endpointProvider) {
var vm = this;
vm.endpoint = endpointProvider.get();
});
<body ng-controller="MainCtrl as vm">
<div>endpoint = {{::vm.endpoint }}</div>
</body>
Endpunkt = http: //some.rest.endpoint
Ohne config wäre das Ergebnis
Endpunkt = n / a