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