Javascript 在AngularJS中使用缓存时出错

Javascript 在AngularJS中使用缓存时出错,javascript,angularjs,Javascript,Angularjs,我第一次加载我的模式HTML页面并获得正确的数据,但是如果我第二次尝试加载,我会得到一个错误 请在下面找到我的JS代码 var cache = $cacheFactory('cacheId'); var cacheData = cache.get('xml'); if (!cacheData) { MyRestApi.getData($scope.data1).then(function(response) { cacheData = response;

我第一次加载我的模式HTML页面并获得正确的数据,但是如果我第二次尝试加载,我会得到一个错误

请在下面找到我的JS代码

var cache = $cacheFactory('cacheId');
var cacheData = cache.get('xml');

if (!cacheData) {
    MyRestApi.getData($scope.data1).then(function(response) {
        cacheData = response;
        cache.put('xml', cacheData);
    });
} else {
    var processdata = cache.get('xml');
}
在MyRestApi.js中,我使用以下代码

getData: function(Key) {
    return $http.get(baseURL + '/getDetails/' + Key, {
        headers: header,
        cache: true
    });
}
这是我第一次在angular JS中使用$cache,请告诉我为什么会出现此错误。我正在第二次加载相同的模式页面,我得到了这个错误。 获取angular.js:13568错误:[$cacheFactory:iid]CacheId'CacheId'已被获取

这就足够了:

getData: function(Key) {
    return $http.get(baseURL + '/getDetails/' + Key, {
        headers: header,
        cache: true
    });
}
第一次获取数据时,它将存储在http缓存中。第二次发出相同的请求时,它将传递缓存的值,而不是再次获取它。只需查看dev工具中的network选项卡即可确认


但是,只有当您有一个单页应用程序时,这才是正确的,重新加载(f5)页面将重置缓存。

当您设置
cache:true
时,get请求将自动缓存。如果要手动操作缓存,则应将
cache
属性设置为刚创建的$cacheFactory对象。但是你真的想要吗?有没有可能直接像$scope.cache一样获取而不使用$cacheFactory,如果它自动缓存,我如何从MyRestApi到JS代码获取缓存值。我只需要设置一次数据,然后第二次获取,因为数据非常庞大,加载时间很长$scope.cache.put('xml',cacheData)和get使用$scope.cache.get('xml'),请注意您提到的方式。