Qual é a maneira do AngularJS de acessar cookies? Vi referências a um serviço e a um módulo para cookies, mas não há exemplos.
Existe ou não existe uma abordagem canônica do AngularJS?
angularjs
angular-cookies
Ellis Whitehead
fonte
fonte
Respostas:
Esta resposta foi atualizada para refletir a versão mais recente e estável do angularjs. Uma observação importante é que
$cookieStore
é um invólucro fino ao redor$cookies
. Eles são praticamente iguais, pois trabalham apenas com cookies de sessão. Embora isso responda à pergunta original, há outras soluções que você pode considerar, como usar o armazenamento local ou o plug-in jquery.cookie (que daria a você um controle mais refinado e fará cookies no servidor. É claro que fazê-lo em angularjs significa que você provavelmente desejaria envolvê-los em um serviço e usá-lo$scope.apply
para notificar angular mudanças nos modelos (em alguns casos).Uma outra observação e é que há uma pequena diferença entre os dois ao extrair dados, dependendo de se você costumava
$cookie
armazenar valor ou$cookieStore
. Claro, você realmente gostaria de usar um ou outro.Além de adicionar referência ao arquivo js, você precisa injetar
ngCookies
na definição do aplicativo, como:você deve estar pronto para ir.
Aqui está um exemplo funcional mínimo, onde mostro que
cookieStore
é um invólucro fino em torno de cookies:Os passos são:
angular.js
angular-cookies.js
ngCookies
no seu módulo de aplicativo (e não se esqueça de referenciar esse módulo nong-app
atributo)$cookies
ou$cookieStore
ao controladorcookieStore
usando métodos put / getfonte
É assim que você pode definir e obter valores de cookies. Era isso que eu estava procurando originalmente quando encontrei essa pergunta.
Observe que usamos em
$cookieStore
vez de$cookies
fonte
Angular descontinuado
$cookieStore
na versão 1.4.x, portanto, use-o$cookies
se estiver usando a versão mais recente do angular. A sintaxe permanece a mesma para$cookieStore
&$cookies
:Consulte o Documentos para obter uma visão geral da API. Lembre-se também de que o serviço de cookies foi aprimorado com alguns novos recursos importantes, como definir a expiração (consulte esta resposta ) e o domínio (consulte a documentação do CookiesProvider ).
Observe que, na versão 1.3.x ou abaixo, $ cookies possui uma sintaxe diferente da acima:
Além disso, se você estiver usando o caramanchão, certifique-se de digitar o nome do pacote corretamente:
onde XYZ é a versão do AngularJS que você está executando. Há outro pacote no bower "angular-cookie" (sem os 's') que não é o pacote angular oficial.
fonte
Para sua informação, montei um JSFiddle disso usando os
$cookieStore
dois controladores, a$rootScope
e AngularjS 1.0.6. Está no JSFifddle como http://jsfiddle.net/krimple/9dSb2/ como base, se você estiver brincando com isso ...A essência disso é:
Javascript
HTML
fonte
http://docs.angularjs.org/api/ngCookies.$cookieStore
Certifique-se de incluir http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js para usá-lo.
fonte
$cookieStore
para a assinatura do meu controlador (ou sejafunction AccountCtrl($scope, $cookieStore)
), mas, em seguida, receber a seguinte mensagem de erro: Provedor desconhecido: $ cookieStoreProvider <- $ CookieStore$cookieStore
aparentemente, ele é destinado principalmente a cookies gerados pelo cliente. Para acessar cookies gerados pelo servidor, tive que usar$cookies
.https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js
) Veja a publicação no blog: blog.angularjs.org /O AngularJS fornece o módulo ngCookies e o serviço $ cookieStore para usar os cookies do navegador.
Precisamos adicionar o arquivo angular-cookies.min.js para usar o recurso de cookie.
Aqui está um método do AngularJS Cookie.
get (chave); // Este método retorna o valor da chave de cookie especificada.
getObject (chave); // Este método retorna o valor desserializado de uma chave de cookie especificada.
getAll (); // Este método retorna um objeto de valor-chave com todos os cookies.
put (chave, valor, [opções]); // Este método define um valor para a chave de cookie especificada.
remover (chave, [opções]); // Este método remove o cookie fornecido.
Exemplo
Html
Javascript
Tomei referência em http://www.tutsway.com/simple-example-of-cookie-in-angular-js.php .
fonte
Adicionar lib angular de cookie: angular-cookies.js
Você pode usar o parâmetro $ cookies ou $ cookieStore no respectivo controlador
O controlador principal adiciona este injetor 'ngCookies':
Use cookies no seu controlador da seguinte maneira:
fonte
A resposta original aceita menciona o plugin jquery.cookie . Alguns meses atrás, porém, ele foi renomeado para js-cookie e a dependência do jQuery foi removida. Um dos motivos foi apenas para facilitar a integração com outras estruturas, como Angular.
Agora, se você deseja integrar o js-cookie ao angular, é tão fácil quanto algo como:
E é isso. Sem jQuery. Nenhum ngCookies.
Você também pode criar instâncias personalizadas para manipular cookies específicos do servidor, escritos de maneira diferente. Tomemos, por exemplo, o PHP, que converte os espaços
no lado do servidor em um sinal de mais, em
+
vez de também o codificar em porcentagem:O uso de um provedor personalizado seria algo como isto:
Espero que isso ajude alguém.
Veja informações detalhadas nesta edição: https://github.com/js-cookie/js-cookie/issues/103
Para documentos detalhados sobre como integrar com o lado do servidor, consulte aqui: https://github.com/js-cookie/js-cookie/blob/master/SERVER_SIDE.md
fonte
Aqui está um exemplo simples usando $ cookies. Depois de clicar no botão, o cookie é salvo e restaurado depois que a página é recarregada.
app.html:
app.js:
fonte