如何从$ cacheFactory中收集所有对象

时间:2014-08-26 09:44:44

标签: angularjs

我打算使用$ cacheFactory来缓存客户端的对象以解决问题

  1. 性能
  2. 访问同一对象的多视图
  3. 一般用例是

    客户端可以通过缓存服务请求设备。如果它在$ cacheFactory中可用则返回它。如果它不可用,请从服务器获取它并将其添加到$ cacheFactory并返回它。一切都很好看。

    另一个用例是

    客户可以请求所有设备。如何返回$ cacheFactory中缓存的所有设备。

    我没有看到任何给出类似于Java Map.Entry的键值对的方法。有人可以指出是否有任何方法来迭代$ cacheFactory

1 个答案:

答案 0 :(得分:2)

如果您在angularjs docs中查看$cacheFactory的示例,他们就会按照您的意愿行事......

angular.module('cacheExampleApp', []).
  controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
    $scope.keys = [];
    $scope.cache = $cacheFactory('cacheId');
    $scope.put = function(key, value) {
      if ($scope.cache.get(key) === undefined) {
        $scope.keys.push(key);
      }
      $scope.cache.put(key, value === undefined ? null : value);
    };
  }]);

在这个控制器中它将键推入一个数组,如果它是有效的,之后在html中只是遍历键数组,就像这样......

<p ng-if="keys.length">Cached Values</p>
  <div ng-repeat="key in keys">
    <span ng-bind="key"></span>
    <span>: </span>
    <b ng-bind="cache.get(key)"></b>
  </div>