AngularJS存储cookie中的对象数组

时间:2016-10-31 18:35:03

标签: angularjs cookies

我有一个存储在范围变量中的对象数组。问题是当用户刷新页面时,它不会保留该数据,因此我正在考虑使用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中检索数组并显示其内容?还有更好的方法来通过刷新来持久化对象数组吗?服务会更好吗?

3 个答案:

答案 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?它应该与你的角度版本相匹配。

至于持久化数据,我能想到的唯一其他选择是将其保存到服务器。服务不起作用,因为刷新也会清除它。