Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象文字保存到AngularJS中的localStorage_Javascript_Jquery_Html_Angularjs_Local Storage - Fatal编程技术网

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

Javascript 将对象文字保存到AngularJS中的localStorage,javascript,jquery,html,angularjs,local-storage,Javascript,Jquery,Html,Angularjs,Local Storage,我正在尝试将此对象保存到$window.localStorage中: ctrl: 当我访问0 as键时,我得到customer as值,而我需要得到1 as值。客户应该是关键 我怎样才能做到这一点?如何转换?只需将对象$scope.initData完全保存到本地存储,我看不到单独保存initData对象的好处。在应用程序加载时从localStorage加载客户,并在更新时保存客户。但是不要直接从LocalStorageManager工作——我会在上面使用一个服务 // Set localStor

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

ctrl:

当我访问0 as键时,我得到customer as值,而我需要得到1 as值。客户应该是关键

我怎样才能做到这一点?如何转换?

只需将对象$scope.initData完全保存到本地存储,我看不到单独保存initData对象的好处。在应用程序加载时从localStorage加载客户,并在更新时保存客户。但是不要直接从LocalStorageManager工作——我会在上面使用一个服务

// 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]));
        }
});

如果将customer设置为密钥,则会有多个具有相同名称的密钥。这是做不到的。我知道,这就是为什么我转向数组。我现在如何访问客户作为关键引用?因此,直接将对象数组保存到localStorage中,而不是使用JSON.parseobj在模板中插入它?是的,或者直接在控制器中插入它,或者使用服务将其分组为可重用,并在应用程序加载时加载。我不知道为什么我从未想过这样保存整个对象,然后对其进行解析。。只是为了学习,在我的示例中,如果键在值中,比如0:{customer:1,firstName:John,lastName:Doe},是否有方法获取键?因此,将customer作为键。我认为保存整个对象会更好。是的:您必须提供一个自定义筛选器来查找具有特定id的元素,循环所有元素,并将customer字段与您要查找的值相匹配,然后返回该项。
0:"{"customer":1,"firstName":"John","lastName":"Doe"}"
1:"{"customer":2,"firstName":"Jane","lastName":"Doe"}"
2:"{"customer":3,"firstName":"John","lastName":"Smith"}"
// 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));
for(var i = 0; i < $scope.initData.length; ++i) {
           $window.localStorage.setItem('customer-id' + $scope.initData[i].customer, JSON.stringify($scope.initData[i]));
        }
});