2014-06-20 23 views
0

我的API調用會自動緩存在由$ cacheFactory({cache: true})提供的默認緩存中。如果我向數據庫添加另一條記錄,我希望能夠將相關信息(從post API調用中返回以添加記錄)添加到緩存的信息中,而不是刪除緩存並重新請求所有信息數據。

var $httpDefaultCache = $cacheFactory.get('$http'); 
    var data = $httpDefaultCache.get(key) 

關鍵是我的API請求的路徑。數據只是一個數組。元素1是我存儲的數據,它是一個包含數組的散列。我計劃簡單地添加我的新紀錄。但是,當我檢索它($httpDefaultCache.get(key)[1]),我沒有得到一個散列。我得到一個字符串。我可以把所說的字符串轉換成一個散列或者簡單地添加到字符串中,但我想我錯過了從緩存中檢索數據的關鍵組件。思考?

回答

1

答案是我如何在遇到類似問題時前進。

假設您使用$ http向緩存設置爲true的API發出get請求。

將你的控制器中這個請求的返回值設置爲任何值;我們將使用$ scope.politicians。

由於我們使用了默認緩存,因此我們可以通過$cacheFactory.get('$http')(cachedUrl)來檢索它。

$cacheFactory.get('$http').remove(urlOfGetRequest)

讓我想這是最初設置爲從API調用的返回值,然後在完成時緩存重置爲範圍$範圍值的任何更改刪除緩存。

$scope.politicians[new-key] = new-value; 

再次設置緩存,但使用您的範圍作爲值。

$cacheFactory.get('$http').put(urlOfGetRequest, $scope.politicians); 

使用非默認緩存使得這個過程變得更容易。

我發誓必須有更直接的方式來做到這一點。但我找不到它。

+0

謝謝。它適用於我..你有任何其他方式? –