javascript - 在 AngularJS 中将对象文字保存到 localStorage

标签 javascript jquery html angularjs local-storage

我正在尝试将此对象保存到 $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 作为值。 客户应该是关键。

我怎样才能实现这个目标?我该如何转换它?

最佳答案

只需将对象 $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));

或者您可以将 key 更改为如下内容(以客户唯一 ID 作为引用),而不是循环计数器:

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

关于javascript - 在 AngularJS 中将对象文字保存到 localStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44540188/

相关文章:

javascript - 将链接 href 与菜单状态的地址路径进行比较

javascript - Highcharts - 需要高级工具提示功能

html - 两个相邻的图像 float 不去下一行

c# - 网络应用程序上的计时器

javascript - 使用 JQuery 将数据从 Datatable 单元格解析到 Controller ,接收 null 值

javascript - 删除 foreach 循环中的匹配项

javascript - css-如何向图像添加动态 slider ?

javascript - 使用谷歌地图切换类别标记

javascript - 在我的代码中哪里引入延迟函数

php - 在新窗口中输出打印结果