2016-07-21 11 views
0

私はHTMLフォームを含むアプリケーションを持っています。このフォームは、$scope内のオブジェクトにデータを保存するために、ng-modelを使用するAngularJS意味テキストフィールドを使用します。AngularJSのセッションストレージにHTMLフォームを自動保存する

例:HTMLでは

:コントローラで

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

:彼らは入力として

$scope.user = {} 

今私がやろうとしていますどのようなユーザーデータの自動保存でそれはセッションストレージ内にあるので、ページが再読み込み/更新された場合、誤ってデータが残っています。彼らはもう一度それをすべて入力する必要はありません。私は、テキストフィールドの状態が変化走るng-change機能を持っている上記のコードで

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

私は疲れてこれを持っています。この中

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

上記のコードの出力:

enter image description here

私の質問:フォームで私はきちんとこの作業を行うことができますので、すべてのフィールドが自動保存されている方法

とあればページで誤ってフィールドが更新され、データが再度入力されます。これは私がセッションストレージで作業している初めてのことですので、少し混乱しました。

これを達成する最も効率的な方法は何ですか?

答えて

0

オブジェクトとして直接行うのではなく、JSONデータとして保存することができます。

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

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

ページを更新した後、あなたは今私が格納されているオブジェクトの値を持つことになりますバック

var me = JSON.parse(window.sessionStorage.getItem("me")) 

をそれを得るために次の操作を行うことができます。

+0

ありがとうございました。ページリフレッシュ後にセッションのデータをテキストフィールドに取り込むことをどのようにお勧めしますか? – Skywalker

+0

sessionstorageからオブジェクトを取得するだけのスクリプトを作成できます。次に、$( "#id")。val(me.name)のようなことができます。明らかに、if文などで使用する前に確認したいのですが –

+0

これを試しましたが、テキストフィールドからng-modelを削除した場合にのみ動作します。それ以外の場合は、テキストフィールドに値を入力しません。 – Skywalker

関連する問題