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
$get
Methode 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