AngularJS: API: ng/service/$cacheFactory


$cacheFactory

  1. - service in module ng

Factory that constructs Cache objects and gives access to them.


 var cache = $cacheFactory('cacheId');
 expect($cacheFactory.get('cacheId')).toBe(cache);
 expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();

 cache.put("key", "value");
 cache.put("another key", "another value");

 // We've specified no options on creation
 expect(cache.info()).toEqual({id: 'cacheId', size: 2});

Usage

$cacheFactory(cacheId, [options]);

Arguments

ParamTypeDetails
cacheIdstring

Name or id of the newly created cache.

options
(optional)
object

Options object that specifies the cache behavior. Properties:

  • {number=} capacity — turns the cache into LRU cache.

Returns

object

Newly created cache object with the following set of methods:

  • {object} info() — Returns id, size, and options of cache.
  • {{*}} put({string} key, {*} value) — Puts a new key-value pair into the cache and returns it.
  • {{*}} get({string} key) — Returns cached value for key or undefined for cache miss.
  • {void} remove({string} key) — Removes a key-value pair from the cache.
  • {void} removeAll() — Removes all cached values.
  • {void} destroy() — Removes references to this cache from $cacheFactory.

Methods

  • info();

    Get information about all the caches that have been created

    Returns

    Object
    • key-value map of cacheId to the result of calling cache#info
  • get(cacheId);

    Get access to a cache object by the cacheId used when it was created.

    Parameters

    ParamTypeDetails
    cacheIdstring

    Name or id of a cache to access.

    Returns

    object

    Cache object identified by the cacheId or undefined if no such cache.

Example

index.html
<div ng-controller="CacheController">
  <input ng-model="newCacheKey" placeholder="Key">
  <input ng-model="newCacheValue" placeholder="Value">
  <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>

  <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>

  <p>Cache Info</p>
  <div ng-repeat="(key, value) in cache.info()">
    <span ng-bind="key"></span>
    <span>: </span>
    <b ng-bind="value"></b>
  </div></div>
script.js
angular.module('cacheExampleApp', []).
  controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
    $scope.keys = [];
    $scope.cache = $cacheFactory('cacheId');
    $scope.put = function(key, value) {
      $scope.cache.put(key, value);
      $scope.keys.push(key);
    };
  }]);
style.css
p {
  margin: 10px 0 3px;}