簡體   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