繁体   English   中英

将对象文字保存到AngularJS中的localStorage

[英]Saving Object Literal to localStorage in AngularJS

我正在尝试将此对象保存到$window.localStorage()

Ctrl:

app.controller('ctrl', function($window, $scope) {

$scope.initData = [
        {
            customer: 1,
            firstName: "John",
            lastName: "Doe"
        },
        {
            customer: 2,
            firstName: "Jane",
            lastName: "Doe"
        },
        {
            customerId: 3,
            firstName: "John",
            lastName: "Smith",

        }
      ];

// scopes

for(var i = 0; i < $scope.initData.length; ++i) {
           $window.localStorage.setItem(i, JSON.stringify($scope.initData[i]));
        }
});

但是我得到了以键作为索引的值。.我也尝试过:

for(var i = 0; i < $scope.initData.length; ++i) {
           $window.localStorage.setItem(i, Object.values($scope.initData[i]));
        }

for..in ,但无法弄清楚什么是最好的方法。

现在,当我执行console.log(localStorage); 我有这个作为输出:

0:"{"customer":1,"firstName":"John","lastName":"Doe"}"
1:"{"customer":2,"firstName":"Jane","lastName":"Doe"}"
2:"{"customer":3,"firstName":"John","lastName":"Smith"}"

当我访问0作为键时,我得到了customer作为价值,我需要得到1作为价值。 customer应该是关键。

我该如何实现? 我该如何转换呢?

只需将对象$scope.initData完全保存到localStorage ,我看不到initData保存initData对象的好处。 在应用程序加载时从localStorage加载客户,并在更新时保存它们。 但是不要直接在localStorage工作-我会在此之上使用service

// Set localStorage item
localStorage.setItem('initData', JSON.stringify(dataObject));

// Retrieve the object from localStorage
var retrievedObject = localStorage.getItem('initData');

// console.log retrieved item
console.log('retrieved data Object: ', JSON.parse(retrievedObject));

或者,您可以将密钥更改为此(以客户唯一ID作为参考),而不是循环计数器:

for(var i = 0; i < $scope.initData.length; ++i) {
           $window.localStorage.setItem('customer-id' + $scope.initData[i].customer, JSON.stringify($scope.initData[i]));
        }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM