我正在尝试使用角度服务。作为测试,我想制作一个简单的计数器,它在多个控制器和整个浏览器生命周期中递增。我的服务似乎在每个控制器中重新初始化,任何想法?
注意:控制器位于不同的页面上 - 因此页面重新加载
angular.module('myApp').service('Session', function($http) {
this.inc = function() {
console.log("INC Called and Global is :" + this.count);
if(this.count) {
this.count++;
} else {
this.count = 0;
}
};
this.get = function() {
return this.count;
};
});
然后在控制器中我打电话
Session.inc();
和
Session.get();
答案 0 :(得分:1)
您的设置没问题,但您的逻辑错误:
this.inc = function() {
console.log("INC Called and Global is :" + this.count);
if(this.count) {
this.count++;
} else {
this.count = 0;
}
};
第一次运行时,this.count
将初始化为0
,每次下次评估为false。将其更改为:
this.count = 0;
this.inc = function() {
this.count++;
};
更容易理解。
Plnkr:http://plnkr.co/edit/WoPVQZuzQ7Ow781OOgtj?p=preview
this.count = localStorage.getItem('counter') || 0;
this.inc = function() {
this.count++;
localStorage.setItem('counter', this.count);
};