这是我的Javascript。
app.controller('RegisterCtrl', function($scope, $cookies) {
$scope.registerInfo = {};
if($cookies.registerInfo){
angular.forEach($cookies.registerInfo, function(value, key) {
$scope.registerInfo[key] = value;
});
}
$scope.preserve = function() {
$cookies.registerInfo = new Map();
angular.forEach($scope.registerInfo, function(value, key) {
$cookies.registerInfo.set(key, value);
});
};
我已经设置了包含以下代码的HTML。
<input type="number" ng-model="registerInfo.lunch_budget_from">
<input type="number" ng-model="registerInfo.lunch_budget_to">
<button ng-click="preserve();">
我想要做的是将数据保存为Cookie上的Map,但是'$ cookies.registerInfo'保存为String并且我无法正确获取值...
答案 0 :(得分:0)
您是否尝试使用get()方法
,而不是使用点表示法获取值var registerInfo = $cookies.get('registerInfo');
$ cookies service的更多信息
答案 1 :(得分:0)
Cookie总是字符串,没有对象,如果要将对象存储在cookie中,则需要序列化/反序列化对象:
app.controller('RegisterCtrl', function($scope, $cookies) {
$scope.registerInfo = {};
if($cookies.registerInfo){
$scope.registerInfo = JSON.parse($cookies.registerInfo);
}
$scope.preserve = function() {
var registerInfo = new Map();
angular.forEach($scope.registerInfo, function(value, key) {
registerInfo.set(key, value);
});
$cookies.registerInfo = JSON.stringify(registerInfo);
};
唯一的限制是,cookie的长度不得超过1K字节,包括名称和值。可能你可能会寻找localStorage,它也可以让你能够存储没有序列化/反序列化的对象
重要提示:在测试之前,可能必须删除旧的Cookie。