2

$httpサービスの 1 つでAngular のデフォルト キャッシュを使用しています。ユーザーがビューから別のビューに移動すると (私は を使用していますui-router)、キャッシュが無効になり、すべてのアイテムがそこから削除されます。アプリケーションの存続期間全体でキャッシュを無効にしたくありません。

編集: たとえば、このファクトリは、別のルートに移動した後にキャッシュされた結果を返さず、結果を取得するためにサーバー API を呼び出します。

cardModule.factory("myFactory", function ($http) {
    return {
        getAll: function () {
            return $http.get("all", { cache: true })
        }
    }
});

ルートの変更後にデフォルトのキャッシュがそれ自体からアイテムを削除しないようにするにはどうすればよいですか?

4

3 に答える 3

2

問題の原因を見つけました。それは私自身のせいでした。状態の変更後にキャッシュをクリアするコードがどこかにありました。デフォルトの angular $http キャッシュに問題はありません。

于 2016-04-16T11:17:53.230 に答える
1

これをコメントとして残しますが、まだ十分なポイントがありません..

何らかのメモ化を試してみませんか?つまり、スコープにモデルがあり、モデルが定義されていない場合は、$http 呼び出しをトリガーしますか? 何かのようなもの:

var ctrl = this;

ctrl.product = undefined; // or null

if (ctrl.product === undefined) { // or null
  $http.get(...).then(function(resp) {
     ctrl.product = resp.data;
  };
};

このようにして、モデルが初期化され、一度だけ呼び出されます。考えられる欠点は、if ステートメントがこれを非効率的にする可能性があることです。

私はこれをテストしていません。ただアイデアを投げかけているだけです。私もこの問題に非常に興味があります。

于 2016-04-16T09:32:02.707 に答える