$cookie 获取的数据不是 Map 而是 String
$cookie gets data not as Map but as String
这是我的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并且我无法正确获取值...
您是否尝试过使用 get() 方法而不是使用点表示法获取值
var registerInfo = $cookies.get('registerInfo');
$cookies 服务的更多信息
Cookies总是字符串,没有对象,如果你想在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,它还使您能够存储对象 w/o serializing/deserializing
重要提示:在测试之前,可能需要删除旧的 cookie。
这是我的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并且我无法正确获取值...
您是否尝试过使用 get() 方法而不是使用点表示法获取值
var registerInfo = $cookies.get('registerInfo');
$cookies 服务的更多信息
Cookies总是字符串,没有对象,如果你想在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,它还使您能够存储对象 w/o serializing/deserializing
重要提示:在测试之前,可能需要删除旧的 cookie。