当前位置: 首页 > 面试题库 >

angularjs中的CacheFactory是单例吗?

吴浩博
2023-03-14
问题内容

我已经使用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实际上不是您要使用的服务,而是您用来 创建
要使用的单例服务的工厂。盯着您的代码,看来它应该可以工作。但是我继续并创建了一个演示来证明它可以。这是服务:

.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

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



 类似资料:
  • 问题内容: 我有一个存储大量客户端数据的问题,我无法确定哪种方法更好。现在,我正在使用AngularJS的cacheFactory,它可以正常工作,但是所有数据都会通过新会话重新加载。值得使用本地存储代替吗? 问题答案: 如果您的目标是存储客户端数据和持久性数据,则不能使用$ cacheFactory ,它只缓存当前会话的数据。 一种解决方案是使用新的本地存储API。这个很棒的Angular模块为

  • 问题内容: 在参考资料中,我读到: 最后,重要的是要意识到所有Angular服务都是应用程序单例。这意味着每个喷油器只有一种给定服务的实例。 但是用这个简单的代码似乎不是一个单例 我有点困惑,你能解释一下我怎么了吗? 更新1 可能不是我不是棚里最犀利的工具,但是在@Khanh TO答复之后,这在参考文献中会是一个更好的解释,尚不十分清楚。 更新2 BOOM,这是一个单身人士! 更新3 但是如果你喜

  • 本文向大家介绍Angularjs中ng-repeat的简单实例,包括了Angularjs中ng-repeat的简单实例的使用技巧和注意事项,需要的朋友参考一下 Angularjs中ng-repeat的简单实例 第一个例子:使用ng-repeat最简单的例子 第二个例子:添加过滤条件 以上就是AngularJs 中ng-repent的使用实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮

  • 本文向大家介绍AngularJS 过滤器的简单实例,包括了AngularJS 过滤器的简单实例的使用技巧和注意事项,需要的朋友参考一下 AngularJS 过滤器 过滤器可以使用一个管道字符(|)添加到表达式和指令中。 AngularJS 过滤器 AngularJS 过滤器可用于转换数据: 过滤器 描述 currency 格式化数字为货币格式。 filter 从数组项中选择一个子集。 lowerc

  • 问题内容: 读一本书说servlet从容器方面是单例的。这是真的? 但是,即使是单例,我们也需要处理数据同步等 问题答案: 不能。您可以在同一Web容器中,甚至在同一Web应用程序中,在不同的Servlet名称和URL下多次实例化同一Servlet类。

  • 本文向大家介绍AngularJS 简单过滤器示例,包括了AngularJS 简单过滤器示例的使用技巧和注意事项,需要的朋友参考一下 示例 过滤器格式化表达式的值以显示给用户。它们可以在视图模板,控制器或服务中使用。本示例创建一个过滤器(addZ),然后在视图中使用它。此过滤器所做的全部工作是在字符串的末尾添加大写字母“ Z”。 example.js example.html 在视图内部,过滤器采用