我的理解是AngularJS服务类似于单例,因此只实例化一次。因此,它们应该用于存储诸如“isUserLoggedIn”之类的东西。但是,使用我的应用程序,似乎该服务在每个页面加载时运行。这会导致问题,因为它会重置值。
我做错了什么?
我有一个像这样的index.html:
<body ng-app="MyApp">
<div class="container" ng-view=""></div>
</body>
我的服务如下:
MyApp.service('sharedProperties', function () {
var isLoggedIn = false;
return {
getProperty: function () {
return isLoggedIn;
},
setProperty: function(value) {
isLoggedIn = value;
}
}
})
问题是每当我从一个路径/页面转到下一个路径时,这个服务一直被调用并将isLoggedIn设置为false。
我尝试'强制'缓存以提高index.html不会重新加载的可能性,从而导致服务启动但无济于事。
有什么想法吗?
答案 0 :(得分:0)
试试这个
MyApp.service('sharedProperties', function () {
service = {
isLoggedIn : false,
getProperty: function () {
return service.isLoggedIn;
},
setProperty: function(value) {
service.isLoggedIn = value;
}
};
return service;
});
答案 1 :(得分:0)
使用CacheFactory代替,这可能有助于更多..
答案 2 :(得分:0)
如果您将服务设为值或常数,则应该消失。
myModule.value('sharedProperties', {
isLoggedIn : false,
getProperty: function () {
return service.isLoggedIn;
},
setProperty: function(value) {
service.isLoggedIn = value;
}
});
角度文档是关于difference between constants, values, services, factories, providers的正确读物。