2016-07-21 6 views
0

Ich habe eine App, die ein HTML-Formular enthält, das Formular verwendet AngularJS Bedeutung Textfeld verwenden ng-model, um Daten in Objekte innerhalb der $scope zu speichern.Automatisches Speichern von HTML-Formular in Session Storage in AngularJS

Beispiel:

In HTML:

<input type="text" ng-model="user.firstName"> 

In der Steuerung:

$scope.user = {} 

Nun, was ich versuche zu tun, Auto-Save-Benutzerdaten, wie sie geben Wenn die Seite versehentlich neu geladen/aktualisiert wird, sind die Daten immer noch vorhanden Sie müssen es nicht noch einmal tippen.

Ich habe diese müde:

<textarea type="text" class="form-control" id="Background" name="Background" ng-model="obj.background" ng-change="autosave()" required></textarea> 

In dem obigen Code Ich habe ng-change Funktion, die ausgeführt wird, wenn sich der Zustand des Textfeldes ändert.

$scope.autosave = function(){ 
    $window.sessionStorage.setItem("autosave", $scope.obj); 
} 

Die obigen Codeausgänge in diesen:

enter image description here

Meine Frage:

Wie kann ich richtig diese Arbeit machen, so dass alle Felder im Formular automatisch gespeichert werden und wenn die Seite wird versehentlich aktualisiert das Feld wird wieder mit den Daten gefüllt. Dies ist das erste Mal, dass ich mit Sitzungsspeicher arbeite, also bin ich etwas verwirrt.

Was ist der effizienteste Weg, dies zu erreichen.

Antwort

0

Sie könnten es als JSON-Daten speichern, anstatt es direkt als Objekt zu verwenden.

Folgendes zurück
var me = JSON.parse(window.sessionStorage.getItem("me")) 

jetzt haben mir den Wert des gespeicherten Objekts

var obj = {}; 
obj.name = "dooley" 
obj.last = "bonheuaa" 

window.sessionStorage.setItem("me", JSON.stringify(obj)); 

Nachdem die Seite zu aktualisieren können Sie es tun.

+0

Vielen Dank für die Antwort. Wie empfehlen Sie, dass ich die Textfelder mit den Daten von Sitzung zu Seite auffrische? – Skywalker

+0

Sie können ein Skript haben, das das Objekt einfach aus dem Sessionspeicher abruft. Dann können Sie Dinge tun: $ ("# id"). Val (me.name). Offensichtlich willst du sicherstellen, dass es da ist, bevor du es mit einer if-Anweisung oder etwas verwendest. –

+0

Ich habe das versucht, aber es funktioniert nur, wenn ich das ng-Modell aus dem Textfeld entferne. Andernfalls wird das Textfeld nicht ausgefüllt. – Skywalker

Verwandte Themen