我创建用CacheFactory的服务。我期待它是一个单身人士。我将它注入到控制器中,并且在控制器的范围内正常工作。但是,一旦我去到不同的页面,不同的范围,我似乎没有在我存储在同一个控制器在不同的范围内缓存的值。 CacheFactory的行为不应该是一个单例,在我注入CacheService的任何地方都有相同的缓存对象?在angularjs中的CacheFactory是单例吗?
这是我作为一个例子服务:
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');
}
感谢约什。你的例子工作。现在我看得更近了,我的也是。如果我刷新浏览器,它不起作用。现在我认为这很有意义,因为它在我刷新浏览器时再次引导angularjs。那么在这种情况下,我认为我不再有缓存中的值会同意吗? – DavidB 2013-03-23 18:55:57
是的,状态完全绑定到当前的页面加载。 AngularJS(和所有客户端的MVC框架),旨在在单页的应用程序使用(尽管他们并不限于它们)。但是,如果需要,您可以使用本地存储来坚持。你只需要自己编写服务。 – 2013-03-23 19:10:13