7

ngStorageと$ window.localStorageの違いは何ですか?その代わりにもう一方を使用する方が良いでしょうか? 私はそれらの1つをWebアプリケーション用に選択する必要があります。プロファイルユーザーとトークンのデータを保存する必要があります

答えて

5

これは正常なHTML5のローカルストレージである:ローカルストレージで

、Webアプリケーションは、ユーザーのブラウザ内でローカルにデータを保存することができます は、2つのサービスが含まれています。 HTML5より前には、アプリケーションデータをすべてのサーバー要求に含まれるCookieに格納する必要がありました。ローカルストレージはより安全で、ウェブサイトのパフォーマンスに影響を与えることなく、大量のデータをローカルに保存できます。クッキーとは異なり、ストレージの制限ははるかに大きく(少なくとも5MB)、情報は決してサーバーに転送されません。ローカルストレージは、(ドメインおよびプロトコルごとに)原点ごとです。 1つの原点からのすべてのページは、同じデータを格納してアクセスできます。

これは、ストレージにアクセスするオブジェクトにあなたに与えます - window.localStorageとwindow.sessionStorageの

window.localStorage - 1つのセッションのデータを格納する - 有効期限なしで保存したデータを

window.sessionStorageのデータが失われたように、ブラウザのタブがデータを取得するには

を閉じているとき、あなたはこの

localStorage.getItem("lastname"); 
ような何かをするだろう

このようにしたい場合は、$ windowサービスを使用しますが、上記の例と同じように動作します。

Source


ngStorage対処するために:アンギュラウェイで働くウェブストレージを作る

アンAngularJSモジュールを。 $ localStorageと$ sessionStorageの2つのサービスが含まれています。次に、あなたのように$ストレージを使用することができます

$scope.$storage = $localStorage; 

及びその他:いいえあなたは$ウィンドウサービス

にあなたは$スコープの下で参照することにより$のlocalStorageや$のsessionStorageを渡すことができますに持っているようにゲッターとセッターを扱っていません角度可変の

<body ng-controller="Ctrl"> 
    <button ng-click="$storage.counter = $storage.counter + 1">{{$storage.counter}}</button> 
</body> 

Source


ウェブアプリケーションでangularjを使用する場合は、ngStorageを使用します。これは、より快適で構文に精通しているからです。それはちょうど私の意見です。

+0

あなたはとてもきれいだった、ありがとう! – panagulis72

+0

問題ありません! – sebenalern

6

変数$windowは通常、変数windowです。 Angularが$windowを使用することを推奨する理由は、「実際の」windowオブジェクトを模擬したり置き換えたりすることがある(テスト目的など)ためです。

はngStorageが角道で働くウェブストレージを作る

アンAngularJSモジュールでありながら$window.localStorageを使用すると、あなたはローカルストレージのバニラAPIを使用していることを意味し、これを言いました。 $localStorage$sessionStorage

ソースhere

+2

もっと明示的に言えば、ngStorageはあなたのためのシリアライゼーションの面を担当しますが、これは時間を節約できます。 –

0

ngStorageは内部的にAngularウォッチを使用して$storage/$localStorageオブジェクトへの変更を監視します。つまり、新しい値をブラウザのローカルストレージに確実に保存するためにダイジェストサイクルが必要です。通常は問題ありませんが、$localStorageに値を格納し、ダイジェストサイクルが発生しないで新しいタブを開くと、新しく開いたタブ/ウィンドウに保存された値が表示されない場合があります。

IEでこの問題に遭遇し、それを回避するためにwindow.localStorageを使用しなければなりませんでした。

0
var setLocalStorage = function (token, uname) 
{ 
$localStorage.token = token; 
$localStorage.name = uname; 

} 
$timeout(setLocalStorage(token, userForm.uname), 500); 

使用機能:ngStorage

それは働きます!