Как AngularJS способ получить доступ к куки? Я видел ссылки как на сервис, так и на модуль для файлов cookie, но примеров нет.
Есть или нет канонический подход AngularJS?
angularjs
angular-cookies
Эллис Уайтхед
источник
источник
Ответы:
Этот ответ был обновлен, чтобы отразить последнюю стабильную версию angularjs. Одним из важных примечаний является то, что
$cookieStore
это тонкая оболочка$cookies
. Они практически одинаковы тем, что работают только с сессионными cookie-файлами. Хотя это отвечает на первоначальный вопрос, есть и другие решения, которые вы, возможно, захотите рассмотреть, такие как использование localstorage или плагина jquery.cookie (который даст вам более детальный контроль и использование файлов cookie на стороне сервера. Конечно, выполнение в angularjs означает, что вы вероятно, хотелось бы обернуть их в службу и использовать$scope.apply
для уведомления об изменениях моделей (в некоторых случаях).Еще одно замечание, заключающееся в том, что при извлечении данных между ними есть небольшая разница в зависимости от того, использовали ли вы
$cookie
для хранения значения или$cookieStore
. Конечно, вы действительно хотите использовать один или другой.В дополнение к добавлению ссылки на файл js вам нужно добавить
ngCookies
в определение вашего приложения, такие как:тогда вы должны быть в порядке.
Вот функциональный минимальный пример, где я показываю, что
cookieStore
это тонкая оболочка вокруг файлов cookie:Шаги:
angular.js
angular-cookies.js
ngCookies
в свой модуль приложения (и убедитесь, что вы ссылаетесь на этот модуль вng-app
атрибуте)$cookies
или$cookieStore
параметр в контроллерcookieStore
с использованием методов put / getисточник
Вот как вы можете установить и получить значения cookie. Это то, что я искал, когда нашел этот вопрос.
Обратите внимание, что мы используем
$cookieStore
вместо$cookies
источник
Angular устарела
$cookieStore
в версии 1.4.x, поэтому используйте$cookies
вместо этого, если вы используете последнюю версию angular. Синтаксис остается неизменным для$cookieStore
&$cookies
:См. Документы для обзора API. Помните также, что служба cookie была расширена за счет некоторых новых важных функций, таких как установка срока действия (см. Этот ответ ) и домена (см. Документы CookiesProvider ).
Обратите внимание, что в версии 1.3.x или ниже $ cookies имеет другой синтаксис, чем выше:
Также, если вы используете bower, убедитесь, что правильно набрали название вашего пакета:
где XYZ - версия AngularJS, которую вы используете. В bower "angular-cookie" (без 's') есть еще один пакет, который не является официальным угловым пакетом.
источник
К вашему сведению, я собрал JSFiddle, используя
$cookieStore
два контроллера a$rootScope
и AngularjS 1.0.6. Это на JSFifddle как http://jsfiddle.net/krimple/9dSb2/ в качестве базы, если вы возитесь с этим ...Суть этого:
Javascript
HTML
источник
http://docs.angularjs.org/api/ngCookies.$cookieStore
Убедитесь, что вы используете http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js, чтобы использовать его.
источник
$cookieStore
подпись моего контроллера (т.е.function AccountCtrl($scope, $cookieStore)
), но затем получил следующее сообщение об ошибке: Неизвестный поставщик: $ cookieStoreProvider <- $ cookieStore$cookieStore
по-видимому, в основном предназначено для клиентских файлов cookie. Чтобы получить доступ к сгенерированным сервером куки, я должен был использовать$cookies
вместо этого.https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular-cookies.min.js
) Смотрите сообщение в блоге: blog.angularjs.org /AngularJS предоставляет модуль ngCookies и сервис $ cookieStore для использования файлов cookie браузера.
Нам нужно добавить файл angular-cookies.min.js, чтобы использовать функцию cookie.
Вот несколько методов AngularJS Cookie.
получить (ключ); // Этот метод возвращает значение данного ключа cookie.
GetObject (ключ); // Этот метод возвращает десериализованное значение данного ключа cookie.
получить все(); // Этот метод возвращает объект значения ключа со всеми файлами cookie.
положить (ключ, значение, [параметры]); // Этот метод устанавливает значение для данного ключа cookie.
удалить (ключ, [опции]); // Этот метод удаляет данный cookie.
пример
Html
JavaScript
Я взял ссылку с http://www.tutsway.com/simple-example-of-cookie-in-angular-js.php .
источник
Добавьте угловой файл lib: angular-cookies.js
Вы можете использовать параметр $ cookies или $ cookieStore для соответствующего контроллера
Главный контроллер добавляет эту инъекцию 'ngCookies':
Используйте Cookies в вашем контроллере следующим образом:
источник
В оригинальном принятом ответе упоминается плагин jquery.cookie . Однако несколько месяцев назад он был переименован в js-cookie, а зависимость от jQuery удалена. Одной из причин было просто упростить интеграцию с другими фреймворками, такими как Angular.
Теперь, если вы хотите интегрировать js-cookie с angular, это так же просто, как что-то вроде:
И это все. Нет jQuery. Нет ngCookies.
Вы также можете создавать пользовательские экземпляры для обработки определенных файлов cookie на стороне сервера, которые написаны по-разному. Возьмем, к примеру, PHP, который преобразует пробелы
на стороне сервера в знак плюс,
+
а не кодирует его в процентах:Использование для специального провайдера будет примерно таким:
Надеюсь, это кому-нибудь поможет.
Смотрите подробную информацию в этом выпуске: https://github.com/js-cookie/js-cookie/issues/103
Подробные документы по интеграции с серверной частью см. Здесь: https://github.com/js-cookie/js-cookie/blob/master/SERVER_SIDE.md.
источник
Вот простой пример использования $ cookies. После нажатия на кнопку cookie сохраняется, а затем восстанавливается после перезагрузки страницы.
app.html:
app.js:
источник