繁体   English   中英

AngularJS-如何刷新cacheFactory中的数据

[英]AngularJS - How to refresh data in cacheFactory

我正在使用$cacheFactory ,我喜欢它,因为它可以通过不始终调用服务数据来提高性能。 但是我的疑问在于更新现有数据,如何更新$cacheFactory数据

service.query = function(queryCriteria) {
  var deferred = $q.defer();
  var req = {
    method: 'GET',
    url: BASE_URL + '/ticketCategories' + '?' + ApplicationUtil.parseQueryCriteria(queryCriteria),
    headers: {
      'Authorization': APP_CONSTANTS.STRATAGIES.BEARER + ' ' + ApplicationStorage.getJwtToken()
    },
    cache: true
  };
  var cache = $cacheFactory(Math.random());
  var data = cache.get("ticketCategories");
  if (!data) {
    $http(req).then(function(payload) {
      deferred.resolve(payload.data);
      cache.put("ticketCategories", payload.data);
    }, function(reason) {
      Logger.error(reason, 'Error querying ticket categories');
      deferred.reject(reason);
    });
  } else {
    return data;
  }
  return deferred.promise;
};

使用您的代码的示例实现可能如下所示。

var cache = $cacheFactory(Math.random());

service.query = function(queryCriteria) {
    var deferred = $q.defer();
    var req = {
        method: 'GET',
        url: BASE_URL + '/ticketCategories' + '?' + ApplicationUtil.parseQueryCriteria(queryCriteria),
        headers: {
            'Authorization': APP_CONSTANTS.STRATAGIES.BEARER + ' ' + ApplicationStorage.getJwtToken()
        },
        cache: true
    };
    var data = cache.get("ticketCategories");
    if (!data) {
        $http(req).then(function(payload) {
            deferred.resolve(payload.data);
            cache.put("ticketCategories", payload.data);
        }, function(reason) {
            Logger.error(reason, 'Error querying ticket categories');
            deferred.reject(reason);
        });
    } else {
        return data;
    }
    return deferred.promise;
};

service.refresh = function (queryCriteria) {
    // removes all cached entries
    cache.removeAll();
    // force reload, still returns the promise
    return service.query(queryCriteria);
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM