Services AngularJS
Dans AngularJS, vous pouvez créer votre propre service ou utiliser l'un des nombreux services intégrés.
Qu'est-ce qu'un service ?
Dans AngularJS, un service est une fonction, ou un objet, qui est disponible et limité à votre application AngularJS.
AngularJS a environ 30 services intégrés. L'un d'eux est le $location
service.
Le $location
service dispose de méthodes qui renvoient des informations sur l'emplacement de la page Web actuelle :
Exemple
Utilisez le $location
service dans un contrôleur :
var app = angular.module('myApp', []);
app.controller('customersCtrl',
function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Notez que le $location
service est transmis au contrôleur en tant qu'argument. Afin d'utiliser le service dans le contrôleur, il doit être défini comme une dépendance.
Pourquoi utiliser les Services ?
Pour de nombreux services, comme le $location
service, il semble que vous puissiez utiliser des objets qui sont déjà dans le DOM, comme l' window.location
objet, et vous le pouvez, mais cela aurait certaines limitations, du moins pour votre application AngularJS.
AngularJS surveille constamment votre application, et pour qu'elle gère correctement les changements et les événements, AngularJS préfère que vous utilisiez le $location
service plutôt que l' window.location
objet.
Le service $ http
Le $http
service est l'un des services les plus couramment utilisés dans les applications AngularJS. Le service envoie une requête au serveur et laisse votre application gérer la réponse.
Exemple
Utilisez le $http
service pour demander des données au serveur :
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm").then(function
(response) {
$scope.myWelcome
= response.data;
});
});
Cet exemple illustre une utilisation très simple du $http
service. En savoir plus sur le $http
service dans le didacticiel AngularJS Http .
Le service $timeout
Le $timeout
service est la version AngularJS de la
window.setTimeout
fonction.
Exemple
Afficher un nouveau message après deux secondes :
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $timeout) {
$scope.myHeader = "Hello
World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
Le service $intervalle
Le $interval
service est la version AngularJS de la
window.setInterval
fonction.
Exemple
Afficher l'heure toutes les secondes :
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $interval) {
$scope.theTime = new
Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
},
1000);
});
Créez votre propre service
Pour créer votre propre service, connectez votre service au module :
Créez un service nomméhexafy
:
app.service('hexafy', function() {
this.myFunc = function (x) {
return x.toString(16);
}
});
Pour utiliser votre service personnalisé, ajoutez-le en tant que dépendance lors de la définition du contrôleur :
Exemple
Utilisez le service personnalisé nommé hexafy
pour convertir un nombre en un nombre hexadécimal :
app.controller('myCtrl', function($scope, hexafy) {
$scope.hex
= hexafy.myFunc(255);
});
Utiliser un service personnalisé dans un filtre
Une fois que vous avez créé un service et que vous l'avez connecté à votre application, vous pouvez utiliser le service dans n'importe quel contrôleur, directive, filtre ou même dans d'autres services.
Pour utiliser le service dans un filtre, ajoutez-le en tant que dépendance lors de la définition du filtre :
Le service hexafy
utilisé dans le filtre myFormat
:
app.filter('myFormat',['hexafy', function(hexafy) {
return function(x) {
return
hexafy.myFunc(x);
};
}]);
Vous pouvez utiliser le filtre lors de l'affichage des valeurs d'un objet ou d'un tableau :
<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>