Esta publicación tiene 16 meses de antigüedad, te invitamos a buscar publicaciones más recientes relacionados a este tema aquí.

Hay un par de formas que podemos usar para compartir datos entre las vistas HTML de nuestro proyecto en AngularJs. La primer forma es con $rootScope, para inicializarlo necesitamos inyectar un nuevo servicio que es de gran ayuda este es llamado $rootScope.

 

.controller('indexController', function($scope, $rootScope){
 
    $rootScope.contacts = [
        {
            name: 'Cristina Rojas',
            phone: '0123456789',
            address: '123, Colima, México',
            email: 'cristina@email.com',
            website: 'codejobs.biz',
            notes: ''
        },
        {
            name: 'Carlos Santana',
            phone: '91234859',
            address: '234, Guadalajara, México',
            email: 'carlos@gmail.com',
            website: 'codejobs.biz',
            notes: 'Algunas notas especiales para este contacto.'
        }
    ];
 
    $scope.contacts = $rootScope.contacts;
 
})
 

Para acceder a cualquier cosa en el ámbito root desde la vista solo necesitamos mandar a llamar el prefijo $root con la notación de punto:

<tr ng-repeat="contact in $root.contacts">
 

Este método para compartir datos entre las vistas realmente no tiene mucha ventaja sobre todas las herramientas que AngularJs nos proporciona. Si bien, se dice que si usamos $rootScope particularmente accediendo desde la vista no es buena práctica. 

Creando servicios personalizados

Una mejor manera de compartir datos entre las vistas HTML es construir un servicio personalizado. Pero, ¿Qué es un servicio? un servicio es esencialmente una pequeña clase a la cuál nosotros podemos acceder una vez que es inyectada en nuestros controladores - justamente cómo lo hace $scope. 

Ahora bien, hay 3 tipos de servicios en AngularJs: .service(), .factory() y .value(). Estos tres tipos de servicios actual cómo “singletons” el cuál es un patrón de diseño que restringe a una sola instancia de un objeto. 

.value()

El servicio más básico de los tres es el método .value(), vamos a agregarlo a nuestro módulo de la siguiente manera: 

.value('nombredelServicio', 'abc123');
 

Cómo podemos ver es muy simple de realizar; el método acepta dos parámetros uno es el nombre del servicio que queremos crear y el segundo parámetro es el valor que el servicio mantendrá. 

Los datos pueden ser compartidos a través de nuestra aplicación mediante la inyección en nuestros controladores.

.controller('indexController', function($scope, nombredelServicio){
    $scope.demo = nombredelServicio;
});
 

Es muy simple, pero nos provee una manera muy sencilla de compartir datos. Si tuviéramos que compartir una clave API en múltiples controladores esta forma de compartir datos sería la ideal. 

En la próxima publicación veremos el método factory. 

@telecristy. 

¿Te gustó esta publicación? Márcala como favorita