.factory("CountingService", function() {
var i = 0;
this.getNumber = (function() {
return i += i + 1;
})();
return this;
})
我有这项服务来更新我的购物车号码,但似乎没有获得最新的本地存储数据。因为我在我的控制器上测试了这个
console.log(CountingService.getNumber )
甚至
$timeout(function(){
console.log(CountingService.getNumber )
},1000);
我已经调试了好几个小时了。
答案 0 :(得分:2)
CountingService.getNumber
(getItem
?)是一个自我调用函数(IIFE)。您将此函数的结果分配给CountingService.getNumber
。首次执行代码时会发生这种情况。这就是为什么当您稍后更改本地存储并再次致电getNumber
时,您将无法看到任何更改。试试这个:
.factory("CountingService", function() {
this.getNumber = function() {
if(localStorage.getItem('cart') != null){
var cart = JSON.parse(localStorage.getItem('cart'));
var totalItem = 0;
for(var i=0;i<cart.length;i++){
totalItem += cart[i].qty;
}
return totalItem;
} else{
return 0;
}
};
return this;
})
并像这样使用它:
console.log(CountingService.getNumber())