我有一个存储在范围变量中的对象数组。问题是当用户刷新页面时,它不会保留该数据,因此我正在考虑使用cookie。
变量$ scope.Users存储一组用户对象,我使用以下代码将该数据转换为cookie:
if ($cookies.getObject('user_data') === '' || $cookies.getObject('user_data') === undefined)
$cookies.putObject('user_data',$scope.Users);
我使用
显示任何数据的console.log($ cookies.getObject( '的user_data'))
我没有得到任何回报,所以似乎putObject不保存数据。这可能有什么问题? Cookie的大小是否超出限制?
以前我使用以下内容从我的html页面中检索数据:
<tr ng-repeat="User in Users">
<td>{{User.Name}}</td>
<td>{{User.ID}}</td>
<td>{{User.DOB}}</td>
<td>{{User.Status}}</td>
</tr>
我的问题是如何从Cookie中检索数组并显示其内容?还有更好的方法来通过刷新来持久化对象数组吗?服务会更好吗?
答案 0 :(得分:1)
你可以尝试这段代码。
var obj = {"Name": name, "ID": id, "DOB": dob, "Status": status};
$scope.Users.push(obj);
$cookies.put('user_data', JSON.stringify($scope.Users));
var s = $cookies.get('user_data');
$scope.Users= JSON.parse(s);
答案 1 :(得分:0)
确保将 ngCookies
作为依赖项注入模块,
angular.module('cookiesExample', ['ngCookies'])
您可以在控制器中执行此操作,
设置数据
$cookies.user_data = $scope.users;
检索数据
$scope.Users= $cookies.user_data;
<强> HTML 强>
<tr ng-repeat="User in Users">
<td>{{User.Name}}</td>
<td>{{User.ID}}</td>
<td>{{User.DOB}}</td>
<td>{{User.Status}}</td>
</tr>
<强> DEMO 强>
答案 2 :(得分:0)
我没有问题地重新创建了你的场景。您使用的是什么版本的$ cookies?它应该与你的角度版本相匹配。
至于持久化数据,我能想到的唯一其他选择是将其保存到服务器。服务不起作用,因为刷新也会清除它。