$ cacheFactory + API调用:更新缓存

时间:2014-06-20 22:09:00

标签: angularjs caching

我的API调用会自动缓存在$ cacheFactory({cache: true})提供的默认缓存中。如果我向DB添加另一条记录,我希望能够将相关信息(从后API调用返回以添加记录)添加到我所拥有的缓存信息中,而不是删除缓存并让它重新请求所有数据。

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

密钥是我的API请求的路径。数据只是一个数组。元素1是我存储的数据,它是包含数组的哈希。我打算简单地添加我的新记录。但是当我检索它($httpDefaultCache.get(key)[1])时,我没有得到哈希值。我得到一个字符串。我可以把所谓的字符串转换成哈希或简单地添加到字符串中,但我想我错过了从缓存中检索数据的关键组件。想法?

1 个答案:

答案 0 :(得分:1)

如果有人遇到类似的问题,我会如何前进的答案。

假设您使用$ http对缓存设置为true的API发出get请求。

在控制器中将此请求的返回值设置为任何值;我们将使用$ scope.politicians。

由于我们使用了默认缓存,因此我们可以通过$cacheFactory.get('$http')(cachedUrl)检索它。

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

删除缓存

对我最初设置为API调用返回值的$ scope值进行任何更改,然后在完成后将缓存重置为该范围。

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

再次设置缓存,但使用范围作为值。

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

使用非默认缓存会使此过程变得更加容易。

我发誓必须有更直接的方法来做到这一点。但我找不到它。