AngularJS Servicios (Service)
En AngularJS puedes crear tus propios servicios o usar servicios integrados.
¿Qué es un servicio?
En AngularJS, un servicio es una función u objeto que se puede usar en tu aplicación AngularJS.
AngularJS incluye más de 30 servicios integrados.
Hay un$locationservicio que puede devolver la dirección URL de la página actual.
Ejemplo
app.controller('customersCtrl', function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
Pruébalo »
Nota$locationEl servicio se pasa como parámetro al controller. Para usarlo, debes definirlo en el controller.
¿Por qué usar servicios?
Entre muchos servicios, como el servicio $location, se pueden usar objetos existentes en el DOM, similares al objeto window.location, pero el objeto window.location tiene ciertas limitaciones en las aplicaciones AngularJS.
AngularJS monitorea constantemente la aplicación, maneja los cambios de eventos, AngularJS usa$locationservicios en lugar de usarwindow.locationobjetos es mejor.
$location vs window.location
| window.location | $location.service | |
|---|---|---|
| Propósito | Permite operaciones de lectura y escritura en la ubicación actual del navegador. | Permite operaciones de lectura y escritura en la ubicación actual del navegador. |
| API | Expone un objeto que se puede leer y escribir. | Expone un lector/escritor de estilo jQuery. |
| Si se integra con la aplicación en el ciclo de vida de la aplicación AngularJS. | no | Puede acceder a cada etapa dentro del ciclo de vida de la aplicación e integrarse con $watch. |
| Si hay integración perfecta con la API de HTML5. | no | Sí (degradación elegante para navegadores antiguos) |
| Si es relevante para el contexto de la aplicación. | No, window.location.path devuelve "/docroot/actual/path" | Sí, $location.path() devuelve "/actual/path" |
Servicio $http
$httpEs el servicio más utilizado en las aplicaciones AngularJS. El servicio envía solicitudes al servidor y la aplicación responde a los datos transmitidos por el servidor.
Ejemplo
Usar$httpel servicio para solicitar datos al servidor:
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
});
Pruébalo »
Lo anterior es un muy simple$httpejemplo de servicio. Para más$httpaplicaciones del servicio, consultael tutorial AngularJS Http.。
Servicio $timeout
AngularJS $timeoutEl servicio corresponde a JS window.setTimeoutfunción.
Ejemplo
Mostrar información después de dos segundos:
app.controller('myCtrl', function($scope, $timeout) {
$scope.myHeader = "Hello World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
Pruébalo »
Servicio $interval
AngularJS $intervalEl servicio corresponde a JSwindow.setIntervalfunción.
Ejemplo
Mostrar información cada segundo:
app.controller('myCtrl', function($scope, $interval) {
$scope.theTime = new Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
}, 1000);
});
Pruébalo »
Crear un servicio personalizado
Puedes crear servicios personalizados y vincularlos a tu módulo:
Crea unhexafyservicio llamado:
this.myFunc = function (x) {
return x.toString(16);
}
});
Para usar un servicio personalizado, debes agregarlo de forma independiente al definir el controlador y establecer la dependencia:
Ejemplo
Usar el servicio personalizadohexafyConvierte un número a hexadecimal:
$scope.hex = hexafy.myFunc(255);
});
Pruébalo »
Usar un servicio personalizado en un filtro
Una vez que hayas creado un servicio personalizado y lo hayas conectado a tu aplicación, puedes usarlo en controladores, directivas, filtros u otros servicios.
En el filtromyFormatusa el serviciohexafy:
return function(x) {
return hexafy.myFunc(x);
};
}]);
Pruébalo »
Puedes usar un filtro al obtener valores en un array de objetos:
Otras extensiones