¿Cuál es la forma de AngularJS de acceder a las cookies? He visto referencias tanto a un servicio como a un módulo para cookies, pero no hay ejemplos.
¿Existe o no existe un enfoque canónico AngularJS?
angularjs
angular-cookies
Ellis Whitehead
fuente
fuente
Respuestas:
Esta respuesta se ha actualizado para reflejar la última versión estable de angularjs. Una nota importante es que
$cookieStore
es un envoltorio delgado que lo rodea$cookies
. Son más o menos lo mismo, ya que solo funcionan con cookies de sesión. Aunque, esto responde a la pregunta original, hay otras soluciones que puede considerar, como el uso de localstorage o el complemento jquery.cookie (que le daría un control más preciso y las cookies en el servidor. Por supuesto, hacerlo en angularjs significa que probablemente desearía incluirlos en un servicio y utilizarlos$scope.apply
para notificar a angular los cambios en los modelos (en algunos casos).Otra nota y es que hay una ligera diferencia entre los dos al extraer datos dependiendo de si solía
$cookie
almacenar valor o$cookieStore
. Por supuesto, realmente querrás usar uno u otro.Además de agregar referencias al archivo js, debe inyectar
ngCookies
en la definición de su aplicación, como por ejemplo:entonces deberías estar listo para irte.
Aquí hay un ejemplo funcional mínimo, donde muestro que
cookieStore
es una envoltura delgada alrededor de las cookies:Los pasos son:
angular.js
angular-cookies.js
ngCookies
en el módulo de su aplicación (y asegúrese de hacer referencia a ese módulo en elng-app
atributo)$cookies
o$cookieStore
al controladorcookieStore
usando métodos put / getfuente
Así es como puede establecer y obtener valores de cookies. Esto es lo que estaba buscando originalmente cuando encontré esta pregunta.
Tenga en cuenta que usamos en
$cookieStore
lugar de$cookies
fuente
Angular obsoleto
$cookieStore
en la versión 1.4.x, así que úselo en su$cookies
lugar si está utilizando la última versión de angular La sintaxis sigue siendo la misma para$cookieStore
&$cookies
:Consulte los documentos para obtener una descripción general de la API. Tenga en cuenta también que el servicio de cookies se ha mejorado con algunas características nuevas e importantes como la caducidad de configuración (consulte esta respuesta ) y el dominio (consulte Documentos de CookiesProvider ).
Tenga en cuenta que, en la versión 1.3.xo inferior, $ cookies tiene una sintaxis diferente a la anterior:
Además, si está utilizando Bower, asegúrese de escribir el nombre del paquete correctamente:
donde XYZ es la versión de AngularJS que está ejecutando. Hay otro paquete en Bower "angular-cookie" (sin la 's') que no es el paquete angular oficial.
fuente
Para su información, armé un JSFiddle de esto usando los
$cookieStore
dos controladores, a$rootScope
y AngularjS 1.0.6. Está en JSFifddle como http://jsfiddle.net/krimple/9dSb2/ como base si estás jugando con esto ...La esencia de esto es:
Javascript
HTML
fuente
http://docs.angularjs.org/api/ngCookies.$cookieStore
Asegúrese de incluir http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js para usarlo.
fuente
$cookieStore
la firma de mi controlador (es decirfunction AccountCtrl($scope, $cookieStore)
), pero luego recibí el siguiente mensaje de error: Proveedor desconocido: $ cookieStoreProvider <- $ cookieStore$cookieStore
aparentemente está destinado principalmente a las cookies generadas por el cliente. Para acceder a las cookies generadas por el servidor, tuve que usar$cookies
en su lugar.https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js
) Ver publicación del blog: blog.angularjs.org /AngularJS proporciona el módulo ngCookies y el servicio $ cookieStore para usar las cookies del navegador.
Necesitamos agregar el archivo angular-cookies.min.js para usar la función de cookies.
Aquí hay algún método de AngularJS Cookie.
obtener la clave); // Este método devuelve el valor de la clave de cookie dada.
getObject (clave); // Este método devuelve el valor deserializado de la clave de cookie dada.
obtener toda(); // Este método devuelve un objeto de valor clave con todas las cookies.
put (clave, valor, [opciones]); // Este método establece un valor para la clave de cookie dada.
eliminar (clave, [opciones]); // Este método elimina la cookie dada.
Ejemplo
HTML
JavaScript
Tengo referencia tomada de http://www.tutsway.com/simple-example-of-cookie-in-angular-js.php .
fuente
Agregue la cookie angular lib: angular-cookies.js
Puede usar el parámetro $ cookies o $ cookieStore para el controlador respectivo
El controlador principal agrega esta inyección 'ngCookies':
Use cookies en su controlador de esta manera:
fuente
La respuesta original aceptada menciona el complemento jquery.cookie . Sin embargo, hace unos meses, cambió su nombre a js-cookie. y se eliminó la dependencia de jQuery. Una de las razones fue simplemente para facilitar la integración con otros marcos, como Angular.
Ahora, si desea integrar js-cookie con angular, es tan fácil como algo como:
Y eso es. No jQuery. No hay cookies.
También puede crear instancias personalizadas para manejar cookies específicas del lado del servidor que se escriben de manera diferente. Tomemos, por ejemplo, PHP, que convierte los espacios
en el lado del servidor en un signo más en
+
lugar de codificarlo también en porcentaje:El uso para un proveedor personalizado sería algo como esto:
Espero que esto ayude a cualquiera.
Ver información detallada en este número: https://github.com/js-cookie/js-cookie/issues/103
Para obtener documentos detallados sobre cómo integrarse con el lado del servidor, consulte aquí: https://github.com/js-cookie/js-cookie/blob/master/SERVER_SIDE.md
fuente
Aquí hay un ejemplo simple con $ cookies. Después de hacer clic en el botón, la cookie se guarda y luego se restaura después de volver a cargar la página.
app.html:
app.js:
fuente