AngularLocalStorageを使う

ちょっとハマったのでメモを残します。
今作っているアプリで、ローカルストレージにデータを保存できたらいいのかなと思って調べていたら、AngularJS側で使いやすいようにモジュール化されたのがありました。

AngularLocalStorage

その使い方の記事
AngularJS の localStorage モジュール angularLocalStorage

これでよさそうなのかなと思ったのですが、いまいち使い方がわからなかったので、試行錯誤していたところ、記事を書いていた本人に声をかけていただいて、疑問が解決したので、メモっておきます。

var yourApp = angular.module('yourApp', [..., 'angularLocalStorage']
yourApp.controller('yourController', function($scope, storage) {
// hogeをキーにしてlocalStorageに保存される
storage.bind($scope, 'hoge'); // 既存の変数を指定すると、$scope.varName になる。
console.log($scope.hoge); // => 空

// * defaultValue: デフォルト値。既に値があったら上書きしない。
// * storeName: storeNameをキーとしてlocalStorageに保存される
storage.bind($scope, 'piyo', {defaultValue: 'default', storeName: 'fuga'});

console.log($scope.piyo); // => 'default'
console.log(storage.get('fuga')); // => 'default'
// つまり$scope.piyo == storage.get('fuga');

storeNameを変えることで、1つのブラウザを複数ユーザーが使うときに値が上書きされるのを避けることができる、ということだそうです。

// userの属性は人それぞれ
var user = {email: 'hoge@example.com', name: 'hoge', age: 30};
storage.bind($scope, 'user', {storeName: user.email, defaultValue: user});
// しかし、扱う側は$scope.userを扱うだけでよい。
// storeNameを元にlocalStrageから値を取得して$scope.userとバインドしてくれる。

バインドが非常に簡単なので、管理も楽かなと思う。
やっとわかってきたー。


カテゴリー JavaScript | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です