javascript title - Alcance de la sesiónAlmacenamiento y almacenamiento local




html css (3)

Los valores se sobrescribirán entre sí. Cada par clave-nombre es único para un protocolo y dominio, independientemente de las rutas.

El dominio afectado se puede cambiar a través de la propiedad document.domain .

  • sub.example.com -> example.com es posible (subdominio)
  • sub.example.com -> other.example.com no es posible

Leí un poco de documentación sobre sessionStorage y localStorage, pero no entiendo cuál es el alcance: ¿el dominio, una página específica?

Por ejemplo, si tengo las siguientes páginas:

http://example.com/products.aspx?productID=1

http://example.com/products.aspx?productID=2

http://example.com/services.aspx?serviceID=3

Y si en cada una de las páginas anteriores ejecuto (con idvalue es el valor en la cadena de consulta):

localStorage.setItem('ID',idvalue);

¿Voy a terminar con 3 valores diferentes almacenados, o se van a sobrescribir los valores entre ellos?


Almacenamiento de sesión:

  1. Los valores persisten solo mientras la ventana o pestaña en la que se almacenan.

  2. Los valores solo son visibles dentro de la ventana o pestaña que los creó.

Almacenamiento local:

  1. Los valores persisten en la ventana y el tiempo de vida del navegador.

  2. Los valores se comparten en cada ventana o pestaña que se ejecuta en el mismo origen.

Entonces, al leer y entender esto, cada par clave-valor es único para cada dominio, porque el almacenamiento local persiste en los valores de la ventana o pestaña.


¿Cómo puedo enviar mi objeto $ scope de un controlador a otro usando los métodos. $ Emit y. $ On?

Puede enviar cualquier objeto que desee dentro de la jerarquía de su aplicación, incluido $ scope .

Aquí hay una idea rápida de cómo funcionan la emisión y la emisión .

Note los nodos abajo; todos anidados dentro del nodo 3. Usted usa transmisión y emisión cuando tiene este escenario.

Nota: El número de cada nodo en este ejemplo es arbitrario; fácilmente podría ser el número uno; el número dos; O incluso el número 1.348. Cada número es solo un identificador para este ejemplo. El punto de este ejemplo es mostrar el anidamiento de los controladores / directivas angulares.

                 3
           ------------
           |          |
         -----     ------
         1   |     2    |
      ---   ---   ---  ---
      | |   | |   | |  | |

Echa un vistazo a este árbol. ¿Cómo respondes las siguientes preguntas?

Nota: Hay otras formas de responder a estas preguntas, pero aquí hablaremos sobre transmisión y emisión . Además, cuando lea el texto debajo, suponga que cada número tiene su propio archivo (directiva, controlador) ex one.js, two.js, three.js.

¿Cómo habla el nodo 1 al nodo 3 ?

En el archivo one.js

scope.$emit('messageOne', someValue(s));

En el archivo three.js : el nodo superior a todos los nodos secundarios necesarios para la comunicación.

scope.$on('messageOne', someValue(s));

¿Cómo habla el nodo 2 al nodo 3?

En el archivo two.js

scope.$emit('messageTwo', someValue(s));

En el archivo three.js : el nodo superior a todos los nodos secundarios necesarios para la comunicación.

scope.$on('messageTwo', someValue(s));

¿Cómo habla el nodo 3 al nodo 1 y / o el nodo 2?

En el archivo three.js : el nodo superior a todos los nodos secundarios necesarios para la comunicación.

scope.$broadcast('messageThree', someValue(s));

En el archivo one.js && two.js, el archivo que desee capturar el mensaje o ambos.

scope.$on('messageThree', someValue(s));

¿Cómo habla el nodo 2 al nodo 1?

En el archivo two.js

scope.$emit('messageTwo', someValue(s));

En el archivo three.js : el nodo superior a todos los nodos secundarios necesarios para la comunicación.

scope.$on('messageTwo', function( event, data ){
  scope.$broadcast( 'messageTwo', data );
});

En el archivo one.js

scope.$on('messageTwo', someValue(s));

SIN EMBARGO

Cuando tenga todos estos nodos secundarios anidados intentando comunicarse de esta manera, verá rápidamente muchos $ on's , $ broadcast's y $ emit's .

Esto es lo que me gusta hacer.

En el NOMBRE DE LOS PADRES superior ( 3 en este caso ...), que puede ser su controlador principal ...

Así, en el archivo three.js

scope.$on('pushChangesToAllNodes', function( event, message ){
  scope.$broadcast( message.name, message.data );
});

Ahora, en cualquiera de los nodos secundarios solo necesita $ emitir el mensaje o capturarlo usando $ on .

NOTA: normalmente es bastante fácil realizar una conversación cruzada en una ruta anidada sin usar $ emit , $ broadcast o $ on , lo que significa que la mayoría de los casos de uso son para cuando intenta que el nodo 1 se comunique con el nodo 2 o viceversa.

¿Cómo habla el nodo 2 al nodo 1?

En el archivo two.js

scope.$emit('pushChangesToAllNodes', sendNewChanges());

function sendNewChanges(){ // for some event.
  return { name: 'talkToOne', data: [1,2,3] };
}

En el archivo three.js : el nodo superior a todos los nodos secundarios necesarios para la comunicación.

Ya manejamos esto, ¿recuerdas?

En el archivo one.js

scope.$on('talkToOne', function( event, arrayOfNumbers ){
  arrayOfNumbers.forEach(function(number){
    console.log(number);
  });
});

Aún necesitará usar $ on con cada valor específico que desee capturar, pero ahora puede crear lo que quiera en cualquiera de los nodos sin tener que preocuparse sobre cómo hacer llegar el mensaje a través del espacio del nodo principal a medida que detectamos y transmitimos Los pushChangesToAllNodes genéricos.

Espero que esto ayude...





javascript html5 local-storage sessionstorage