Javascript 使用angularjs工厂的奇怪结果

Javascript 使用angularjs工厂的奇怪结果,javascript,angularjs,html,local-storage,Javascript,Angularjs,Html,Local Storage,我有这个服务来更新我的购物车号码,但它似乎没有得到最新的本地存储数据。因为我在我的控制器上做了这样的测试 console.log(CountingService.getNumber)甚至 .factory("CountingService", function() { var i = 0; this.getNumber = (function() { return i += i + 1; })(); return this; }) 我已经调试了几

我有这个服务来更新我的购物车号码,但它似乎没有得到最新的本地存储数据。因为我在我的控制器上做了这样的测试

console.log(CountingService.getNumber)
甚至

.factory("CountingService", function() {
  var i = 0;
    this.getNumber = (function() {
      return i += i + 1;

    })();

    return this;
  })

我已经调试了几个小时。

CountingService.getNumber(
getItem
?)是一个自调用函数(IIFE)。将此函数的结果分配给
CountingService.getNumber
。这在代码第一次执行时发生。这就是为什么,当您稍后更改localstorage并再次调用
getNumber
时,您将看不到任何更改。试试这个:

$timeout(function(){

    console.log(CountingService.getNumber )

},1000);

CountingService.getNumber
getItem
?)是一个自调用函数(IIFE)。将此函数的结果分配给
CountingService.getNumber
。这在代码第一次执行时发生。这就是为什么,当您稍后更改localstorage并再次调用
getNumber
时,您将看不到任何更改。试试这个:

$timeout(function(){

    console.log(CountingService.getNumber )

},1000);

什么是
getItem
?您应该了解,您的工厂初始化代码将执行一次。因此,
getNumber
将表示工厂初始化时的值。你应该导出函数才能获得新的数据。@vp_arth怎么做?@fikkatra用how-to写了一个很好的答案。简单到
this.getNumber=function(){return i++}
,然后用as
cs.getNumber()和什么是
getItem
?您应该了解,您的工厂初始化代码将执行一次。因此,
getNumber
将表示工厂初始化时的值。你应该导出函数才能获得新的数据。@vp_arth怎么做?@fikkatra用how-to写了一个很好的答案。简单到
this.getNumber=function(){return i++}
,然后用as
cs.getNumber()
console.log(CountingService.getNumber())