1

配列を格納し、localStorageその配列に要素を追加し続けるだけで、アプリケーションで格納された配列を取得できます。これはAngular Local Storage Moduleで行うのは非常に簡単なことですが、かなり面倒でした。これについて助けてもらいたいと思っています。

以下は、使用中のモジュールに格納するためquerieslocalStorage使用している角度コードです。angular-local-storage

.factory('QueryService', ['localStorageService', function(localStorageService) {
        var queries = [];
        var factory = {};

        factory.addQuery = function(query) {
            queries.push(query);

            localStorageService.set('queries', queries);
            return localStorageService.get("queries");
        };
        return factory;
    }])

配列にクエリを追加するたびにqueries、最後に追加された要素のみが結果として返されます。つまり、基本的にlocalStorageService.get("queries")は、配列に追加された最後の要素を提供していqueriesます。

queries返される配列に追加する最後の要素だけを取得するのはなぜなのか、誰かが理解するのを手伝ってくれませんか?

編集: 各要素を配列に追加した後queries、ブラウザーを更新しています。

4

1 に答える 1

3

通常、配列を直接 localStorage に格納することはできません。しかし、angular-local- storageは、次の行に見られるように、この作業を行います:

あなたの質問に答える手がかりは、要素を追加した後にブラウザーを更新しているため、クエリ配列が実際にクリーンアップされることです。ブラウザーを更新すると、実際にはすべての JavaScript 値が消去され、AngularJS アプリケーション全体でさえもコントローラーが再起動されます。

コードを機能させるには、コントローラーの最初の行でクエリ配列を初期化する必要があります。

.factory('QueryService', ['localStorageService', function(localStorageService) {
        var queries = localStorageService.get('queries') || [];
        var factory = {};

        factory.addQuery = function(query) {
            queries.push(query);

            localStorageService.set('queries', queries);
            return localStorageService.get("queries");
        };
        return factory;
    }])
于 2014-10-09T17:44:12.563 に答える