我已经使用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'); }
$cacheFactory实际上不是您要使用的服务,而是您用来 创建 要使用的单例服务的工厂。盯着您的代码,看来它应该可以工作。但是我继续并创建了一个演示来证明它可以。这是服务:
$cacheFactory
.factory('CacheService', function($cacheFactory) { var cache = $cacheFactory('cacheService', { capacity: 3 // optional - turns the cache into LRU cache }); return cache; });
在此示例中,CacheService 是 具有通过创建的本地缓存的单例$cacheFactory,这是我们从服务返回的内容。我们可以将其注入到所需的任何控制器中,并且它将始终返回相同的值。
CacheService
这是工作正常的柱塞:http ://plnkr.co/edit/loKWGms1lMCnmiWa1QA7?p=preview
如果由于某种原因您的帖子中没有包含破坏您代码的内容,请随时更新我的Plunker来破坏它,我们可以从那里开始。