6

我已经使用 CacheFactory 创建了一个服务。我期待它是一个单身人士。我将它注入我的控制器,它在控制器的范围内工作正常。但是,一旦我转到具有不同范围的不同页面,我似乎没有缓存中的值,这些值存储在不同范围的同一控制器中。CacheFactory 的行为不应该是一个单例,在我注入 CacheService 的任何地方都有相同的缓存对象吗?

以我的服务为例:

angular.module('MyService', []).factory('CacheService', function($cacheFactory) {
        return $cacheFactory('cacheService', {
            capacity: 3 // optional - turns the cache into LRU cache
        })
    });

然后在我的控制器中:

function MyController($scope, CacheService) {
   var results= CacheService.get('storedvalue');
   if(!results){
       CacheService.put('storedvalue', results);
      alert('results not stored');
   }
   else
      alert('results stored');
}
4

1 回答 1

16

$cacheFactory实际上不是您要使用的服务 - 它是您用来创建要使用的单例服务的工厂。观察您的代码,它似乎应该可以工作。但我继续创建了一个演示来证明它确实如此。这是服务:

.factory('CacheService', function($cacheFactory) {
   var cache = $cacheFactory('cacheService', {
     capacity: 3 // optional - turns the cache into LRU cache
   });

   return cache;
});

在此示例中,CacheService 具有使用 创建的本地缓存的单例$cacheFactory,这是我们从服务返回的内容。我们可以将它注入到我们想要的任何控制器中,它总是会返回相同的值。

这是一个工作 Plunker:http ://plnkr.co/edit/loKWGms1lMCnmiWa1QA7?p=preview


如果由于某种原因您的帖子不包含破坏代码的内容,请随时更新我的​​ Plunker 以破坏它,我们可以从那里开始。

于 2013-03-23T05:04:08.123 回答