AngularJS-services
In AngularJS kun je je eigen service maken, of gebruik maken van een van de vele ingebouwde services.
Wat is een dienst?
In AngularJS is een service een functie of object die beschikbaar is voor en beperkt is tot uw AngularJS-toepassing.
AngularJS heeft ongeveer 30 ingebouwde services. Een daarvan is de $location
dienstverlening.
De $location
service heeft methoden die informatie retourneren over de locatie van de huidige webpagina:
Voorbeeld
Gebruik de $location
service in een controller:
var app = angular.module('myApp', []);
app.controller('customersCtrl',
function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Merk op dat de $location
service als argument aan de controller wordt doorgegeven. Om de service in de controller te gebruiken, moet deze worden gedefinieerd als een afhankelijkheid.
Waarom Diensten gebruiken?
Voor veel services, zoals de $location
service, lijkt het alsof je objecten kunt gebruiken die al in het DOM staan, zoals het window.location
object, en dat zou ook kunnen, maar het zou enkele beperkingen hebben, in ieder geval voor je AngularJS-toepassing.
AngularJS houdt constant toezicht op uw applicatie en om wijzigingen en gebeurtenissen goed te kunnen verwerken, geeft AngularJS er de voorkeur aan dat u de $location
service gebruikt in plaats van het window.location
object.
De $http-service
De $http
service is een van de meest gebruikte services in AngularJS-applicaties. De service doet een verzoek aan de server en laat uw toepassing het antwoord afhandelen.
Voorbeeld
Gebruik de $http
service om gegevens van de server op te vragen:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm").then(function
(response) {
$scope.myWelcome
= response.data;
});
});
Dit voorbeeld demonstreert een zeer eenvoudig gebruik van de $http
service. Lees meer over de $http
service in de AngularJS Http-zelfstudie .
De $timeout-service
De $timeout
service is de AngularJS-versie van de
window.setTimeout
functie.
Voorbeeld
Na twee seconden een nieuw bericht weergeven:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $timeout) {
$scope.myHeader = "Hello
World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
De $interval-service
De $interval
service is de AngularJS-versie van de
window.setInterval
functie.
Voorbeeld
Geef elke seconde de tijd weer:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $interval) {
$scope.theTime = new
Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
},
1000);
});
Creëer uw eigen service
Om uw eigen service te maken, sluit u uw service aan op de module:
Maak een service met de naam hexafy
:
app.service('hexafy', function() {
this.myFunc = function (x) {
return x.toString(16);
}
});
Om uw op maat gemaakte service te gebruiken, voegt u deze toe als afhankelijkheid bij het definiëren van de controller:
Voorbeeld
Gebruik de op maat gemaakte service genaamd hexafy
om een getal om te zetten in een hexadecimaal getal:
app.controller('myCtrl', function($scope, hexafy) {
$scope.hex
= hexafy.myFunc(255);
});
Gebruik een aangepaste service in een filter
Nadat u een service hebt gemaakt en deze hebt verbonden met uw toepassing, kunt u de service gebruiken in elke controller, richtlijn, filter of zelfs binnen andere services.
Als u de service in een filter wilt gebruiken, voegt u deze toe als een afhankelijkheid bij het definiëren van het filter:
De service hexafy
die in het filter wordt gebruikt myFormat
:
app.filter('myFormat',['hexafy', function(hexafy) {
return function(x) {
return
hexafy.myFunc(x);
};
}]);
U kunt het filter gebruiken bij het weergeven van waarden van een object of een array:
<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>