一尘不染

angularjs中的CacheFactory是单例吗?

angularjs

我已经使用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');
}

阅读 221

收藏
2020-07-04

共1个答案

一尘不染

$cacheFactory实际上不是您要使用的服务,而是您用来 创建
要使用的单例服务的工厂。盯着您的代码,看来它应该可以工作。但是我继续并创建了一个演示来证明它可以。这是服务:

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

   return cache;
});

在此示例中,CacheService
具有通过创建的本地缓存的单例$cacheFactory,这是我们从服务返回的内容。我们可以将其注入到所需的任何控制器中,并且它将始终返回相同的值。

这是工作正常的柱塞:http
://plnkr.co/edit/loKWGms1lMCnmiWa1QA7?p=preview


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

2020-07-04