给出一些数据:
$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是一个空格,不知何故,这个值被保存为“编码”。谁知道发生了什么?
答案 0 :(得分:7)
以下是$ cookieStore的官方文档:
提供由会话cookie支持的键值(字符串 - 对象)存储。从此存储中放入或检索的对象由angular的toJson / fromJson自动序列化或反序列化。
然后商店会保存该值的网址编码版本。看一下this article,有一节解释了cookie编码。
答案 1 :(得分:4)
$ cookieStore。(get / put)自动运行到/从Json上发送的值,它会附加编码的字符。
如果您只是使用$ cookies,那么您可以自行设置参数
$cookies['savedDevice'] = $scope.deviceChoice.name;
或
$cookies.savedDevice = $scope.deviceChoice.name;
无论哪种方式,都会像你想要的那样保存这些值。
$ cookieStore的使用很受欢迎,但如果你想使用服务器上的值,它会自带行李。