.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.getNumbergetItem?)是一种自调用功能(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())

09-18 02:05