【问题标题】:$cacheFactory + API calls: Updating Cache$cacheFactory + API 调用:更新缓存
【发布时间】:2014-06-20 22:08:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: angularjs caching


    【解决方案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);
    

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

    我发誓一定有更直接的方法来做到这一点。但是我没找到。

    【讨论】:

    • 谢谢。它对我有用..你还有其他方法吗?
    猜你喜欢
    • 2016-01-07
    • 2014-04-03
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多