12

给定一些数据:

$scope.devices = [
  { name: 'iPhone 4', os: 'iOS'},
  { name: 'Nexus 7', os: 'Android'},
];

还有一个设置 cookie 的函数:

$scope.saveDeviceChoice = function() {
  $cookieStore.put('savedDevice', $scope.deviceChoice.name);
}

我得到一个值为 %22Nexus%207%22 的 cookie,而不是我所期望的:Nexus 7。

这就是它在网络检查器中的样子

我真的很困惑 - 似乎 %22 是一个引号,而 %20 是一个空格,不知何故这个值被“编码”了。谁知道发生了什么?

4

2 回答 2

7

这是 $cookieStore 的官方文档:

提供由会话 cookie 支持的键值(字符串对象)存储。从此存储中放置或检索的对象由 angular 的 toJson/fromJson 自动序列化或反序列化。

然后存储保存该值的URL 编码版本。看看这篇文章,有一节解释 cookie 编码。

于 2013-06-10T16:06:25.240 回答
4

$cookieStore.(get/put) 根据您发送的值自动运行到 Json 或从 Json 运行,这会附加编码的字符。

如果你只是使用 $cookies 那么你可以设置你的参数这样

$cookies['savedDevice'] = $scope.deviceChoice.name;

或者

$cookies.savedDevice = $scope.deviceChoice.name;

无论哪种方式,值都会像您希望的那样保存。

$cookieStore 的使用很流行,但是如果您想使用服务器上的值,它会自带包袱。

于 2014-08-08T14:40:24.197 回答