2016-08-08 8 views
0

Ich versuche, ein ng-Modell als Schlüssel zu persistieren und versuchen, retrive, aber es funktioniert nicht, wenn es ein Objekt aber funktioniert, wenn ng-Modell String ist.localStorage persistierender Schlüssel als Objekt?

<!DOCTYPE html> 
<html> 

<head> 
    <script data-require="[email protected]" 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 hier: http://plnkr.co/edit/QQAxrOjsRzpK6u81J95J?p=preview

Antwort

1

Diese Frage hat eine große Erklärung: Storing Objects in HTML5 localStorage

Die kurze Antwort ist, dass Sie alle Objekte, die Sie in localstorage speichern wollen stringify müssen, aber bewusst sein, dass es einige Einschränkungen gibt, um JS-Objekte zu stringieren.

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

Joel ist richtig, dass Sie müssen Objekte stringify, müssen Sie auch im Auge behalten, dass Sie keine zirkulären Referenzen haben kann und dass es eine Grenze, wie viel Material, das Sie in localstorage-Dump kann. Aufgrund dieser Begrenzung ist es auch eine gute Idee, ein System zu haben, um zu verfolgen, welche Elemente aus dem Cache geschoben werden sollten und um sie tatsächlich ungültig zu machen.