Angular файлы cookie с кодированными символами
Учитывая некоторые данные:
$scope.devices = [
{ name: 'iPhone 4', os: 'iOS'},
{ name: 'Nexus 7', os: 'Android'},
];
И функция для установки файла cookie:
$scope.saveDeviceChoice = function() {
$cookieStore.put('savedDevice', $scope.deviceChoice.name);
}
Я получаю файл cookie со значением% 22Nexus %207% 22 вместо того, что я ожидал бы: Nexus 7.
Вот как это выглядит в веб-инспекторе http://cl.ly/image/420j150o1X3Q
Я действительно озадачен - кажется, что% 22 - это цитата, а %20 - это пробел, так как значение становится сохраненным "закодированным". Кто знает, что происходит?
Ответы
Ответ 1
Вот официальный документ для $cookieStore:
Предоставляет хранилище ключа-значения (строковый объект), которое поддерживается файлами сеансов. Объекты, помещенные или извлеченные из этого хранилища, автоматически сериализуются или десериализуются с помощью angular toJson/fromJson.
Затем хранилище сохранит версию значения с URL-кодировкой. Взгляните на в этой статье, есть раздел, объясняющий кодировку cookie.
Ответ 2
$cookieStore. (get/put) автоматически запускается в/из Json по отправляемому вами значению, которое добавляет кодированные символы.
Если вам нужно просто использовать $cookies, вы можете уйти с настройкой своих параметров как таковых
$cookies['savedDevice'] = $scope.deviceChoice.name;
или
$cookies.savedDevice = $scope.deviceChoice.name;
В любом случае значения сохраняются так же, как вы хотите, чтобы они были.
Использование $cookieStore является популярным, однако поставляется с собственным багажом, если вы хотите использовать значения на сервере.