AngularJS:将对象存储在 cookie 中,结果为 [Object Object]

AngularJS: Storing an object in a cookie giving result of [Object Object]

我试图在将此用户对象发送到我的服务时将一组用户凭据存储在 cookie 中 -

this.SetCookie = function (user) {
    $cookies.user = user;
}

但是,当我尝试检索此 cookie 时,我得到的不是对象,而是一个字符串,上面写着“[Object Object]”

我可以将所有用户凭据单独存储在他们自己的 cookie 中,我知道我可以做到这一点,但它似乎效率很低?有没有简单的解决方法?我为这个问题找到的最高结果与 JQuery 有关,但对我不起作用。

您正在直接打印将始终显示 [Object Object] 的对象,因为它包含一个 JSON 对象,而在打印它时,它使用警报方法使用 .toString() 方法在控制台中显示它。

您需要创建 JSON.stringify(user) 将所有 JSON 对象转换为字符串。在使用该对象时,您需要使用 JSON.parse(user) 将对象转换为 JSON

JSON.stringify(user); //for storing in cookies

JSON.parse($cookies.user); //for converting into an object

在 Angular 1.4 中,我发现通过像这样创建 cookie 来存储 JSON 对象:

      var obj = {
        currentUser: {
          username: "testUN",
          authdata: authdata
        }
      };
      $cookies.putObject('cookieName', obj);

允许您像这样取回 cookie:

var cookieWObject = $cookies.getObject('cookieName');

然后得到这样的值:

var username = cookieWObject.currentUser.username;
var authdata = cookieWObject.currentUser.authdata;

要在 angular 中使用 cookie,必须在您的控制器中注入依赖项 'ngCookies' 或在 angular.module('app',[ngCookies]) 中声明,不要使用 $ cookieStore 已弃用。

var app = angular.module('myApp',['ngCookies']);
app.controller('cookiesController',['$scope','$cookies',function($scope,$cookies){
  //using put method you can add value using key value 
  $cookies.put('Kye','Admin');
  //access cookies value
  console.log($cookies.get('Key'));
  
  //You can add also object in Cookies
  var data = {
            'name':'admin',
            'pass':'admin'
            }
  $cookies.putObject('data',data);
  //access object value
  console.log($cookies.getObject('data'));
  

}]);