localStorage将密钥持久化为对象?

时间:2016-08-08 15:58:36

标签: javascript angularjs

我试图将ng模型作为关键并试图进行检索,但是当它的一个对象时它不工作但是当ng-model是字符串时工作。

<!DOCTYPE html>
<html>

<head>
    <script data-require="angular.js@1.5.7" data- semver="1.5.7" src="https://code.angularjs.org/1.5.7/angular.js"></script>        
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>        
</head>

<body>
    <div ng-app="myApp">
        <input type="text" ng- model="someText.something.firstName" persist="" />
    </div>
</body>

</html>

Plunkr: http://plnkr.co/edit/QQAxrOjsRzpK6u81J95J?p=preview

2 个答案:

答案 0 :(得分:1)

这个问题有一个很好的解释:Storing Objects in HTML5 localStorage

简短的回答是,您需要对要存储在localStorage中的任何对象进行字符串化,但请注意,有一些警告要对JS对象进行字符串化。

scope.$watch(model, function (value) {
  localStorage[key] = JSON.stringify(value);
});

答案 1 :(得分:0)

Joel是正确的,你必须对对象进行字符串化,你还需要记住,你不能有任何循环引用,并且你可以将多少东西转储到localStorage是有限制的。由于这个限制,最好有一个系统来跟踪哪些项目应该从缓存中推出并实际使它们无效。