2016-04-28 7 views
0

$httpリクエストcache:falseは、キャッシュを無視してバックエンドサービスから新鮮なデータを取得します。

一方利用可能な場合、cache:true

$http要求は、現在、既存のキャッシュを使用する、またはデータがキャッシュ内にない場合、それは新しいデータを取得し、それをキャッシュします。

は私が$http.get(...)に渡すことができフラグ/ paramsはがあることのどちらか(または両方;)):

1)...現在、既存のキャッシュをクリアし、$のHTTPリクエストを作成するに続け、

2)現在のキャッシュを無視し、$http.get(...)要求を作成し、現在キャッシュされているデータを新しいデータで置き換えます。

btw、私はこれを簡単に達成するために$cacheFactoryを使用することができますが、本当にしたくないと知っています。

ここでは、これを説明する簡単なplunkrです:http://plnkr.co/edit/wu8iz9?p=preview

答えて

0

はそれを行うためのサービスを使用します。

DataService.jsコントローラ

var promise; 

this.emptyCache = function() { 
    promise = null; 
}; 

this.getData = function (isFreshCallNeeded) { 
    if (isFreshCallNeeded) { this.emptyCache(); } 

    if (promise) { return promise; } 

    promise = $http({url: '', method: 'GET'}).then(function (data) { return data; }); 
    return promise; 
}; 

、サービスを注入し、次のようにそれを使用する:

// for first time, makes call and return promise 
DataService.getData().then(function(data) {console.log(data)}); 
// second time, makes no call and return promise cached earlier 
DataService.getData().then(function(data) {console.log(data)}); 

var isFreshCallNeeded = true; 
// clears the cache, makes a call and return new promise 
DataService.getData(isFreshCallNeeded).then(function(data) {console.log(data)}); 

// makes no call and return old saved promise 
DataService.getData().then(function(data) {console.log(data)}); 
+0

おかげ。私はサービスを使用することを考えましたが、私は本当にトリックを行うには$ httpのキャッシュパラメータを使用して探しています... – raneshu

関連する問題