AngularJS
providers
Sök…
Syntax
- konstant (namn, värde);
- värde (namn, värde);
- fabrik (namn, $ getFn);
- service (namn, konstruktör);
- leverantör (namn, leverantör);
Anmärkningar
Tillhandahållare är singleton-objekt som kan injiceras, till exempel, i andra tjänster, styrenheter och direktiv. Alla leverantörer är registrerade med olika "recept", där Provider
är den mest flexibla. Alla möjliga recept är:
- Konstant
- Värde
- Fabrik
- Service
- provider
Tjänster, fabriker och leverantörer är alla lata initialiserade, komponenten initialiseras endast om applikationen beror på det.
Dekoratörer är nära besläktade med leverantörer. Dekoratörer används för att fånga upp tjänster eller skapa fabriker för att ändra dess beteende eller åsidosätta (delar av) den.
Konstant
Constant
finns både i konfigurations- och körfaser.
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>
slutpunkt = http: //some.rest.endpoint
Värde
Value
är tillgängligt både i konfigurations- och körfaser.
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>
slutpunkt = http: //some.rest.endpoint
Fabrik
Factory
finns i körfasen.
Fabriksreceptet konstruerar en ny tjänst med en funktion med noll eller fler argument (det här är beroenden av andra tjänster). Returvärdet för denna funktion är den serviceinstans som skapas av detta recept.
Fabriken kan skapa en tjänst av vilken typ som helst, oavsett om det är en primitiv, objektlig bokstavsfunktion, funktion eller till och med en instans av en anpassad typ.
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>
slutpunkt = http: //some.rest.endpoint
Service
Service
är tillgänglig i körfasen.
Servicereceptet producerar en tjänst precis som Value eller Factory-recept, men det gör det genom att åberopa en konstruktör med den nya operatören . Konstruktören kan ta noll eller fler argument, som representerar beroenden som behövs av instansen av denna typ.
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>
slutpunkt = http: //some.rest.endpoint
provider
Provider
är tillgänglig både i konfigurations- och körfaser.
Provider-receptet definieras syntaktiskt som en anpassad typ som implementerar en
$get
metod.Du bör bara använda leverantörsreceptet om du vill avslöja ett API för applikationsomfattande konfiguration som måste göras innan applikationen startar. Detta är vanligtvis intressant endast för återanvändbara tjänster vars beteende kan behöva variera något mellan applikationer.
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>
slutpunkt = http: //some.rest.endpoint
Utan config
skulle resultatet bli
slutpunkt = n / a