.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);
我已经调试了几个小时。
最佳答案
CountingService.getNumber
(getItem
?)是一种自调用功能(IIFE)。您可以将此功能的结果分配给CountingService.getNumber
。第一次执行代码时会发生这种情况。因此,当您以后更改localstorage并再次调用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())