gpt4 book ai didi

angularjs - angularjs中的CacheFactory是单例吗?

转载 作者:行者123 更新时间:2023-12-04 13:19:58 24 4
gpt4 key购买 nike

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

以我的服务为例:

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

然后在我的 Controller 中:
function MyController($scope, CacheService) {
var results= CacheService.get('storedvalue');
if(!results){
CacheService.put('storedvalue', results);
alert('results not stored');
}
else
alert('results stored');
}

最佳答案

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

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

return cache;
});

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

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

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

关于angularjs - angularjs中的CacheFactory是单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com