2017-06-14 46 views
0

我想這個對象保存到$window.localStorage()保存對象文本的localStorage在AngularJS

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應該是關鍵。

我該如何做到這一點?我該如何轉換?

+0

如果您'customer'作爲重點,有將是多個具有相同名稱的密鑰。這是不能做到的。 –

+0

我知道,這就是爲什麼我轉向數組。我現在怎樣才能訪問'customer'作爲關鍵參考? – tholo

回答

1

只需將對象$scope.initData完整保存到localStorage,我沒有看到隔離保存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])); 
     } 
}); 
+0

因此,直接將'array of objects'保存到'localStorage'中,而不是使用'JSON.parse(obj)'將它插入到模板中? – tholo

+0

是的,無論是直接在你的'controller'中插入它,還是使用'service'將它分組爲可重用 - 並在應用程序加載時加載它。 –

+0

我不知道爲什麼我從來沒有想過保存這樣的整個對象,然後解析它..只是爲了學習的目的,在我的例子中,是否有一種方法來獲得如果他們在值中的鍵, 0:「{」customer「:1,」firstName「:」John「,」lastName「:」Doe「}」'?因此獲得''客戶''作爲關鍵。 – tholo

相關問題