Cómo crear tu propio servicio en angularJS

En un post anterior sobre AngularJS hablé de los servicios básicos que nos proporciona este framework. En este artículo mostraré cómo podéis crear vuestro propio servicio en angularJS.

Un servicio en AngularJS mantiene los datos durante el tiempo de vida de una aplicación y también se comunican entre diferentes controladores de una manera consistente. Los servicios son implementados como singletons, este tipo de objetos son instanciados una vez por aplicación, es decir, interactuas con la misma instancia de un objeto cada vez que uses un servicio. Aunque suene como una pérdida de rendimiento, Angular es consciente y sólo lo creará cuando lo necesites y nunca antes.

Creando el servicio

Para crear el servicio será preciso crear un módulo. Una vez creado, usamos un factoy method en nuestro módulo que consta de 2 argumentos: el primero es el nombre el nombre del servicio y el segundo la función anónima (factoy function) que devuelve un objeto.

La función devolverá un objeto (service object) y representa el servicio que usarás en tu aplicación.  Llamaremos el objeto saludoSvc

Cuando la aplicación necesite por primera vez el servicio, entonces se llamará a la factory function devolviendonos este objeto.

El service object saludoSVC tendrá 2 funciones, una de ellas nos devolverá la fecha completa en castellano y la otra solamente la hora.

Y para rematar la factory function, devolveremos el objeto saludoSVC y cerramos.

Cabe recordar que este objeto se devuelve siempre cuando necesitemos el servicio. Esto quiere decir, que una vez creado es común para toda la aplicación. Por tanto,
todos los cambios que hagas a este objeto permanecerán durante todo el tiempo de vida de la aplicación.

Llamando al servicio

Ahora tenemos nuestro servicio sólo nos falta llamarlo. Para ello será preciso crear un controlador donde se le pasará como argumento el nombre del servicio.

Como podemos ver, le asignamos  a la variable $scope 2 atributos, fecha y hora respectivamente. Cada una tendrá el valor de las funciones que hemos creado en el servicio.

Ahora sólo falta mostrar los atributos que tiene $scope, vamos al <body> e invocamos el modulo, el controlador con las directivas ng-app y ng-controller respectivamente. Y dentro del <body> podemos invocar los 2 atributos de $scope.

Resultado final

Si quieres ver el resultado final, puedes acceder a este codepen.

See the Pen Crear servicio en angularJS by guidacode (@guidacode) on CodePen.0


Espero que os haya gustado este tutorial sobre crear un servicio en angularJS, a seguir picando 😉