Quelle est la façon dont AngularJS accède aux cookies? J'ai vu des références à la fois à un service et à un module pour les cookies, mais pas d'exemples.
Existe-t-il ou non une approche canonique AngularJS?
angularjs
angular-cookies
Ellis Whitehead
la source
la source
Réponses:
Cette réponse a été mise à jour pour refléter la dernière version stable d'angularjs. Une note importante est qu'il
$cookieStore
s'agit d'une enveloppe mince entourant$cookies
. Ils sont à peu près les mêmes en ce sens qu'ils ne fonctionnent qu'avec des cookies de session. Bien que cela réponde à la question d'origine, vous pouvez envisager d'autres solutions, telles que l'utilisation de localstorage ou du plug-in jquery.cookie (qui vous donneraient un contrôle plus fin et feraient des cookies côté serveur. Bien sûr, le faire dans angularjs signifie que vous voudrait probablement les envelopper dans un service et les utiliser$scope.apply
pour notifier angular des modifications apportées aux modèles (dans certains cas).Une autre note et c'est qu'il y a une légère différence entre les deux lors de l'extraction des données selon que vous avez utilisé
$cookie
pour stocker la valeur ou$cookieStore
. Bien sûr, vous voudriez vraiment utiliser l'un ou l'autre.En plus d'ajouter une référence au fichier js, vous devez injecter
ngCookies
dans votre définition d'application telle que:vous devriez alors être prêt à partir.
Voici un exemple minimal fonctionnel, où je montre qu'il
cookieStore
s'agit d'un mince emballage autour des cookies:Les étapes sont les suivantes:
angular.js
angular-cookies.js
ngCookies
dans votre module d'application (et assurez-vous de référencer ce module dans l'ng-app
attribut)$cookies
ou$cookieStore
au contrôleurcookieStore
aide des méthodes put / getla source
C'est ainsi que vous pouvez définir et obtenir des valeurs de cookie. C'est ce que je cherchais à l'origine lorsque j'ai trouvé cette question.
Notez que nous utilisons
$cookieStore
au lieu de$cookies
la source
Angular déconseillé
$cookieStore
dans la version 1.4.x, utilisez-le donc$cookies
si vous utilisez la dernière version d'angular. La syntaxe reste la même pour$cookieStore
&$cookies
:Consultez la documentation pour une présentation de l'API. Gardez également à l'esprit que le service de cookies a été amélioré avec de nouvelles fonctionnalités importantes telles que la définition de l'expiration (voir cette réponse ) et le domaine (voir CookiesProvider Docs ).
Notez que, dans la version 1.3.x ou inférieure, $ cookies a une syntaxe différente de celle ci-dessus:
De plus, si vous utilisez bower, assurez-vous de taper correctement le nom de votre package:
où XYZ est la version AngularJS que vous exécutez. Il y a un autre paquet dans bower "angular-cookie" (sans le 's') qui n'est pas le paquet angulaire officiel.
la source
Pour info, j'ai assemblé un JSFiddle de ceci en utilisant le
$cookieStore
, deux contrôleurs, a$rootScope
et AngularjS 1.0.6. C'est sur JSFifddle comme http://jsfiddle.net/krimple/9dSb2/ comme base si vous vous amusez avec ça ...L'essentiel est:
Javascript
HTML
la source
http://docs.angularjs.org/api/ngCookies.$cookieStore
Assurez-vous d'inclure http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js pour l'utiliser.
la source
$cookieStore
à la signature de mon contrôleur (c.-à-d.function AccountCtrl($scope, $cookieStore)
), Mais j'ai ensuite le message d'erreur suivant: Fournisseur inconnu: $ cookieStoreProvider <- $ cookieStore$cookieStore
est principalement destiné aux cookies générés par les clients. Pour accéder aux cookies générés par le serveur, j'ai dû utiliser à la$cookies
place.https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js
) Voir l'article de blog: blog.angularjs.org /AngularJS fournit le module ngCookies et le service $ cookieStore pour utiliser les cookies du navigateur.
Nous devons ajouter le fichier angular-cookies.min.js pour utiliser la fonction de cookie.
Voici une méthode de AngularJS Cookie.
Obtenir la clé); // Cette méthode renvoie la valeur de la clé de cookie donnée.
getObject (clé); // Cette méthode renvoie la valeur désérialisée de la clé de cookie donnée.
Avoir tout(); // Cette méthode renvoie un objet de valeur clé avec tous les cookies.
put (clé, valeur, [options]); // Cette méthode définit une valeur pour une clé de cookie donnée.
supprimer (clé, [options]); // Cette méthode supprime le cookie donné.
Exemple
Html
Javascript
J'ai pris la référence de http://www.tutsway.com/simple-example-of-cookie-in-angular-js.php .
la source
Ajouter un cookie angulaire lib: angular-cookies.js
Vous pouvez utiliser le paramètre $ cookies ou $ cookieStore pour le contrôleur respectif
Le contrôleur principal ajoute cet inject 'ngCookies':
Utilisez des cookies dans votre contrôleur comme ceci:
la source
La réponse originale acceptée mentionne le plugin jquery.cookie . Il y a quelques mois, il a été renommé js-cookie et la dépendance jQuery a été supprimée. L'une des raisons était simplement de faciliter l'intégration avec d'autres frameworks, comme Angular.
Maintenant, si vous souhaitez intégrer js-cookie avec angular, c'est aussi simple que quelque chose comme:
Et c'est tout. Pas de jQuery. Aucun ngCookies.
Vous pouvez également créer des instances personnalisées pour gérer des cookies côté serveur spécifiques qui sont écrits différemment. Prenons par exemple PHP, qui convertit les espaces
côté serveur en signe plus
+
au lieu de le coder en pourcentage:L'utilisation d'un fournisseur personnalisé serait quelque chose comme ceci:
J'espère que cela aide n'importe qui.
Voir les informations détaillées dans ce numéro: https://github.com/js-cookie/js-cookie/issues/103
Pour des documents détaillés sur la façon d'intégrer avec côté serveur, voir ici: https://github.com/js-cookie/js-cookie/blob/master/SERVER_SIDE.md
la source
Voici un exemple simple utilisant $ cookies. Après avoir cliqué sur le bouton, le cookie est enregistré, puis restauré après le rechargement de la page.
app.html:
app.js:
la source