Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?


177

現在、サービスを使用してアクションを実行しています。つまり、サーバーからデータを取得して、サーバー自体にデータを格納しています。

これの代わりに、サーバーに保存するのではなく、ローカルストレージにデータを格納したいと考えています。どうすればよいですか?

回答:


125

これは、ローカルストレージに保存および取得するコードの一部です。ブロードキャストイベントを使用して、モデルの値を保存および復元します。

app.factory('userService', ['$rootScope', function ($rootScope) {

    var service = {

        model: {
            name: '',
            email: ''
        },

        SaveState: function () {
            sessionStorage.userService = angular.toJson(service.model);
        },

        RestoreState: function () {
            service.model = angular.fromJson(sessionStorage.userService);
        }
    }

    $rootScope.$on("savestate", service.SaveState);
    $rootScope.$on("restorestate", service.RestoreState);

    return service;
}]);

9
これをどのように使用しますか?
chovy

4
chovy、ここでは完全な角度の例であるstackoverflow.com/questions/12940974/...は
アントン

290
レコードのsessionStoragelocalStorage
火星ロバートソン

4
$ window.sessionStorageを使用して、テストに挿入することができます
GuillaumeMassé14年


105

を使用$window.localStorage.setItem(key,value)して保存、$window.localStorage.getItem(key)取得、および$window.localStorage.removeItem(key)削除する場合は、任意のページの値にアクセスできます。

$windowサービスをコントローラーに渡す必要があります。JavaScriptでは、windowオブジェクトはグローバルに使用できます。

$window.localStorage.xxXX()ユーザーを使用することにより、localStorage値を制御できます。データのサイズはブラウザによって異なります。のみを使用する場合$localStoragewindow.location.hrefを使用して他のページに移動する限り値は残り、を使用<a href="location"></a>して他のページに移動する$localStorageと、次のページで値が失われます。


12
この解決策は私に最も適していました。DOMに直接簡単にアクセスできるのに、なぜプラグインまたはモジュールを使用するのですか?単純な文字列ではなくオブジェクトを保存したいので、angular.toJson()をsetItem()と組み合わせて使用​​し、angular.fromJson()をgetItem()と組み合わせて使用​​しました。簡単です。大好きです。
Brett Donald

5
これが最良の答えです。外部依存関係は必要ありません。
Kasper Ziemianek

2
これは、キー/値ペア管理の最も簡単なソリューションであることに同意しました
jolySoft '26

行のキーは何ですか:$ window.localStorage.setItem(key、value)。それはどこで宣言され設定されていますか?

キーは、一意にIDの値にしたいものです。したがって、何かを格納するときにキーを定義します。これは、キーを取得するために使用するものと同じです。
user441521 2018年

56

ローカルストレージの場合は、以下のURLにそのためのモジュールがあります。

https://github.com/grevory/angular-local-storage

HTML5ローカルストレージとangularJsのその他のリンク

http://www.amitavroy.com/justread/content/articles/html5-local-storage-with-angular-js/


5
StackOverflowでは、外部リンクが停止する傾向があるため、リンクのみの回答は推奨されません。
Hubert Grzeskowiak 2017

50

使用ngStorageのためにすべてのあなたのAngularJSローカルストレージのニーズ。これは、Angular JSフレームワークのネイティブ部分ではないことに注意してください。

ngStorage 2つのサービスを含み$localStorage$sessionStorage

angular.module('app', [
   'ngStorage'
]).controller('Ctrl', function(
    $scope,
    $localStorage,
    $sessionStorage
){});

デモを確認する


24
これは角度の一部ではなく、追加ファイルとしてインポートする必要があることに言及する価値があります
Serge

1
npmモジュールにリンクしますか?
揺れ動く


2

localStorage目的に使用できます。

手順:

  1. ファイルにngStorage.min.jsを追加します
  2. モジュールにngStorage依存関係を追加します
  3. $ localStorageモジュールをコントローラーに追加します
  4. $ localStorage.key = valueを使用します

2

(別の)角度のあるhtml5ストレージサービスを作成しました。によって可能になった自動更新を維持したいと思っていましたngStorageが、ダイジェストサイクルを(少なくとも私にとっては)予測可能/直感的にし、状態の再読み込みが必要なときに処理するイベントを追加し、タブ間の共有セッションストレージを追加しました。私は後にAPIをモデル化して$resource呼び出しましたangular-stored-object。次のように使用できます。

  angular
    .module('auth', ['yaacovCR.storedObject']);

  angular
    .module('auth')
    .factory('session', session);

  function session(ycr$StoredObject) {
    return new ycr$StoredObject('session');
  }

APIはこちらです。

レポはこちら

それが誰かを助けることを願っています!


反対票を投じた人は自分の投票について説明したいと思いますか?
DerMike、2016年

1
私のプロジェクトでは現在角度格納オブジェクトを使用しており、本当に簡単に使用できます。さらに、Yaacovは質問への回答が非常に迅速です。だから私もそれをお勧めします!
JR Utily 2017

2

Angular-ローカルストレージにデータを保存するには、次の手順に従います。

  1. フォルダに「ngStorage.js」を追加します。
  2. angular.moduleに「ngStorage」を注入する

        eg: angular.module("app", [ 'ngStorage']);
  3. $localStorageapp.controller関数に追加します

4. $localStorageコントローラ内で使用できます

Eg: $localstorage.login= true;

上記はlocalstorageをあなたのブラウザアプリケーションに保存します



1

これにはngStorageと呼ばれるサードパーティのスクリプトを使用する必要があります。ここでは使用方法の例を示します。スコープ/ビューの変更でlocalstorageを更新します。

    <!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <!-- CDN Link -->
    <!--https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.6/ngStorage.min.js-->
    <script src="angular.min.js"></script>
    <script src="ngStorage.min.js"></script>
    <script>
        var app = angular.module('app', ['ngStorage']);
        app.factory("myfactory", function() {
            return {
                data: ["ram", "shyam"]
            };
        })
        app.controller('Ctrl', function($scope, $localStorage, $sessionStorage, myfactory) {

            $scope.abcd = $localStorage; //Pass $localStorage (or $sessionStorage) by reference to a hook under $scope
            // Delete from Local Storage
            //delete $scope.abcd.counter;
            // delete $localStorage.counter;
            // $localStorage.$reset(); // clear the localstorage
            /* $localStorage.$reset({
                 counter: 42   // reset with default value
             });*/
            // $scope.abcd.mydata=myfactory.data;
        });
    </script>
</head>

<body ng-app="app" ng-controller="Ctrl">

    <button ng-click="abcd.counter = abcd.counter + 1">{{abcd.counter}}</button>
</body>

</html>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.