2

起動時に管理者ユーザーのリストを取得するアプリケーションがあります。データは次のようになります。

var users =
[
{"id":"527ddbd5-14d3-4fb9-a7ae-374e66f635d4","name":"x"},
{"id":"966171f8-4ea1-4008-b6ac-d70c4eee797b","name":"y"},
{"id":"de4e89fe-e1de-4751-9605-d6e1ec698f49","name":"z"}
]

このデータを取得する呼び出しがあります:

 os.getUserProfiles($scope);

そして機能:

 getUserProfiles: function ($scope) {

    $http.get('/api/UserProfile/GetSelect')
       .success(function (data, status, headers, config) {
          $scope.option.userProfiles = data; 
       });
    },

管理者ユーザーがユーザー リストを取得するために継続的にリクエストを発行する必要がないようにしたいと考えています。Angular で $cacheFactory を見ていましたが、これは実際には私のニーズを満たしていないようです。

github にある angular-cache は興味深いように見えますが、このようなオブジェクトでそれを使用し、LocalStorageModule を使用してデータを保存する方法がよくわかりません。

この製品を LocalStorageModule と一緒に使用した例を教えてください。

4

1 に答える 1

2

拡張angular-cacheを確認することをお勧めします。

ドキュメントで説明されているとおり: http://jmdobry.github.io/angular-cache/guide.html#using-angular-cache-with-localStorage

app.service('myService', function ($angularCacheFactory) {

    // This cache will sync itself with localStorage if it exists, otherwise it won't. Every time the
    // browser loads this app, this cache will attempt to initialize itself with any data it had
    // already saved to localStorage (or sessionStorage if you used that).
    var myAwesomeCache = $angularCacheFactory('myAwesomeCache', {
        maxAge: 900000, // Items added to this cache expire after 15 minutes.
        cacheFlushInterval: 3600000, // This cache will clear itself every hour.
        deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
        storageMode: 'localStorage' // This cache will sync itself with `localStorage`.
    });
});

または、カスタム Local storage 実装を挿入できます

storageImpl: localStoragePolyfill // angular-cache will use this polyfill instead of looking for localStorage

完全な API を提供しながら、非常に使いやすいプラグインhttps://github.com/grevory/angular-local-storageを使用しています。

テンプレートをキャッシュするためのローカル ストレージの使用状況も確認してください: angularjs パーシャルをキャッシュする方法は?

注: この記事Power up Angular's $http service with caching、およびほとんどのセクション:
Advanced cachingは、私にとってangular-cacheに移行する理由でした

カスタム Polyfill を作成する方法は? (アダプターパターン)

ここに記載されているように、このインターフェースを実装するlocalStoragePolyfillを渡す必要があります。

interface Storage {
  readonly attribute unsigned long length;
  DOMString? key(unsigned long index);
  getter DOMString getItem(DOMString key);
  setter creator void setItem(DOMString key, DOMString value);
  deleter void removeItem(DOMString key);
  void clear();
};

angular-cache は、次の 3 つの方法のみを考慮します。

  • setItem
  • getItem
  • removeItem

つまり、ローカル ストレージ API と対話するラッパーを実装し、それを高度なキャッシュ API に変換します。それでおしまい。他に何もない

于 2014-01-22T08:02:52.153 に答える