Buscar..


Observaciones

Una pregunta muy común cuando se trabaja con Angular es cómo compartir datos entre controladores. El uso de un servicio es la respuesta más frecuente y este es un ejemplo simple que muestra un patrón de fábrica para compartir cualquier tipo de objeto de datos entre dos o más controladores. Debido a que es una referencia de objeto compartido, una actualización en un controlador estará disponible inmediatamente en todos los demás controladores que usen el servicio. Tenga en cuenta que tanto el servicio y la fábrica y los dos proveedores .

Usando ngStorage para compartir datos

En primer lugar, incluya la fuente ngStorage en su index.html.

Un ejemplo de inyección de ngStorage src sería:

<head>
    <title>Angular JS ngStorage</title>
    <script src = "//ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
    <script src="https://rawgithub.com/gsklee/ngStorage/master/ngStorage.js"></script>
</head>

ngStorage le ofrece 2 ngStorage de almacenamiento: $localStorage y $sessionStorage . Necesita requerir ngStorage e inyectar los servicios.

Supongamos que si ng-app="myApp" , estaría inyectando ngStorage siguiente manera:

var app = angular.module('myApp', ['ngStorage']);
        app.controller('controllerOne', function($localStorage,$sessionStorage) {
        // an object to share
        var sampleObject = {
            name: 'angularjs',
            value: 1
        };
       $localStorage.valueToShare = sampleObject;
       $sessionStorage.valueToShare = sampleObject;
    })  
.controller('controllerTwo', function($localStorage,$sessionStorage) {
    console.log('localStorage: '+ $localStorage +'sessionStorage: '+$sessionStorage);
})

$localStorage y $sessionStorage son accesibles globalmente a través de cualquier controlador siempre y cuando inyecte esos servicios en los controladores.

También puede utilizar el localStorage y sessionStorage de HTML5 . Sin embargo, usar HTML5 localStorage requeriría que localStorage y deserialice sus objetos antes de usarlos o guardarlos.

Por ejemplo:

var myObj = {
    firstname: "Nic",
    lastname: "Raboy",
    website: "https://www.google.com"
} 
//if you wanted to save into localStorage, serialize it  
window.localStorage.set("saved", JSON.stringify(myObj));  

//unserialize to get object  
var myObj = JSON.parse(window.localStorage.get("saved"));

Compartir datos de un controlador a otro usando el servicio

Podemos crear un service para set y get los datos entre los controllers y luego inyectar ese servicio en la función del controlador donde queremos usarlo.

Servicio :

app.service('setGetData', function() {
  var data = '';
    getData: function() { return data; },
    setData: function(requestData) { data = requestData; }
});

Controladores:

app.controller('myCtrl1', ['setGetData',function(setGetData) {

  // To set the data from the one controller
  var data = 'Hello World !!';  
  setGetData.setData(data);

}]);

app.controller('myCtrl2', ['setGetData',function(setGetData) {

  // To get the data from the another controller  
  var res = setGetData.getData();
  console.log(res); // Hello World !!

}]);

Aquí, podemos ver que myCtrl1 se usa para setting los datos y myCtrl2 se usa para getting los datos. Entonces, podemos compartir los datos de un controlador a otro como este.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow