Services AngularJS (Service)
Dans AngularJS, vous pouvez créer vos propres services, ou utiliser des services intégrés.
Qu'est-ce qu'un service ?
Dans AngularJS, un service est une fonction ou un objet qui peut être utilisé dans votre application AngularJS.
AngularJS dispose de plus de 30 services intégrés.
Il y a un$locationservice, qui peut renvoyer l'adresse URL de la page actuelle.
Exemple
app.controller('customersCtrl', function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Essayez-le »
Remarque$locationUn service est passé en paramètre au contrôleur. Pour l'utiliser, vous devez le définir dans le contrôleur.
Pourquoi utiliser des services ?
Parmi de nombreux services, tels que le service $location, il peut utiliser des objets existant dans le DOM, similaires à l'objet window.location, mais l'objet window.location présente certaines limitations dans les applications AngularJS.
AngularJS surveille constamment l'application et gère les changements d'événements. AngularJS utilise$locationservices plutôt que d'utiliserwindow.locationobjets, ce qui est préférable.
$location vs window.location
| window.location | $location.service | |
|---|---|---|
| Objectif | Permet des opérations de lecture et d'écriture sur l'emplacement actuel du navigateur | Permet des opérations de lecture et d'écriture sur l'emplacement actuel du navigateur |
| API | Expose un objet qui peut être lu et écrit | Exposer un lecteur/rédacteur de style jQuery |
| S'il est intégré au cycle de vie de l'application AngularJS | non | Peut accéder à chaque étape du cycle de vie de l'application et est intégré à $watch |
| S'il est parfaitement intégré à l'API HTML5 | non | Oui (avec une dégradation gracieuse pour les navigateurs plus anciens) |
| S'il est lié au contexte de l'application | Non, window.location.path renvoie "/docroot/actual/path" | Oui, $location.path() renvoie "/actual/path" |
Service $http
$httpC'est le service le plus couramment utilisé dans les applications AngularJS. Le service envoie des requêtes au serveur, et l'application répond aux données transmises par le serveur.
Exemple
Utilisez le service$httppour demander des données au serveur :
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
});
Essayez-le »
L'exemple ci-dessus est un exemple très simple de service$http. Pour plus d'applications de service$http, voir letutoriel Http AngularJS。
Service $timeout
AngularJS $timeoutLe service correspond au JS window.setTimeoutfonction.
Exemple
Afficher l'information après deux secondes :
app.controller('myCtrl', function($scope, $timeout) {
$scope.myHeader = "Hello World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
Essayez-le »
Service $interval
AngularJS $intervalLe service correspond à la fonction JSwindow.setInterval.
Exemple
Afficher les informations chaque seconde :
app.controller('myCtrl', function($scope, $interval) {
$scope.theTime = new Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
}, 1000);
});
Essayez-le »
Création d'un service personnalisé
Vous pouvez créer un service personnalisé et le lier à votre module :
Créez un service nomméhexafyservice :
this.myFunc = function (x) {
return x.toString(16);
}
});
Pour utiliser un service personnalisé, vous devez l'ajouter séparément lors de la définition du contrôleur et définir la dépendance :
Exemple
Utiliser un service personnaliséhexafyConvertir un nombre en nombre hexadécimal :
$scope.hex = hexafy.myFunc(255);
});
Essayez-le »
Utilisation d'un service personnalisé dans un filtre
Une fois que vous avez créé un service personnalisé et que vous l'avez connecté à votre application, vous pouvez l'utiliser dans des contrôleurs, des directives, des filtres ou d'autres services.
Dans le filtremyFormatutilisez le servicehexafy:
return function(x) {
return hexafy.myFunc(x);
};
}]);
Essayez-le vous-même »
Lorsque vous récupérez des valeurs dans un tableau d'objets, vous pouvez utiliser des filtres :
Créer un servicehexafy:
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>
Essayez-le vous-même »