Serviços AngularJS
No AngularJS, você pode criar seu próprio serviço ou usar um dos muitos serviços integrados.
O que é um Serviço?
No AngularJS, um serviço é uma função ou objeto que está disponível e limitado ao seu aplicativo AngularJS.
AngularJS tem cerca de 30 serviços integrados. Um deles é o $location
serviço.
O $location
serviço possui métodos que retornam informações sobre a localização da página atual:
Exemplo
Use o $location
serviço em um controlador:
var app = angular.module('myApp', []);
app.controller('customersCtrl',
function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Observe que o $location
serviço é passado para o controlador como um argumento. Para usar o serviço no controlador, ele deve ser definido como uma dependência.
Por que usar os Serviços?
Para muitos serviços, como o $location
serviço, parece que você poderia usar objetos que já estão no DOM, como o window.location
objeto, e você poderia, mas teria algumas limitações, pelo menos para sua aplicação AngularJS.
O AngularJS supervisiona constantemente seu aplicativo e, para que ele lide com as alterações e eventos corretamente, o AngularJS prefere que você use o $location
serviço em vez do window.location
objeto.
O serviço $http
O $http
serviço é um dos serviços mais comuns usados em aplicativos AngularJS. O serviço faz uma solicitação ao servidor e permite que seu aplicativo manipule a resposta.
Exemplo
Use o $http
serviço para solicitar dados do servidor:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $http) {
$http.get("welcome.htm").then(function
(response) {
$scope.myWelcome
= response.data;
});
});
Este exemplo demonstra um uso muito simples do $http
serviço. Saiba mais sobre o $http
serviço no Tutorial Http AngularJS .
O serviço $timeout
O $timeout
serviço é a versão da
window.setTimeout
função do AngularJS.
Exemplo
Exibir uma nova mensagem após dois segundos:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $timeout) {
$scope.myHeader = "Hello
World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
O serviço $intervalo
O $interval
serviço é a versão da
window.setInterval
função do AngularJS.
Exemplo
Exibir a hora a cada segundo:
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope, $interval) {
$scope.theTime = new
Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
},
1000);
});
Crie seu próprio serviço
Para criar seu próprio serviço, conecte seu serviço ao módulo:
Crie um serviço chamado hexafy
:
app.service('hexafy', function() {
this.myFunc = function (x) {
return x.toString(16);
}
});
Para usar seu serviço customizado, adicione-o como dependência ao definir o controlador:
Exemplo
Use o serviço personalizado nomeado hexafy
para converter um número em um número hexadecimal:
app.controller('myCtrl', function($scope, hexafy) {
$scope.hex
= hexafy.myFunc(255);
});
Use um serviço personalizado dentro de um filtro
Depois de criar um serviço e conectá-lo ao seu aplicativo, você pode usar o serviço em qualquer controlador, diretiva, filtro ou até mesmo dentro de outros serviços.
Para usar o serviço dentro de um filtro, adicione-o como dependência ao definir o filtro:
O serviço hexafy
usado no filtro myFormat
:
app.filter('myFormat',['hexafy', function(hexafy) {
return function(x) {
return
hexafy.myFunc(x);
};
}]);
Você pode usar o filtro ao exibir valores de um objeto ou uma matriz:
<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li>
</ul>