我想创建一个静态javascript变量,用作Angularjs控制器中的计数器。这个静态变量将在重复调用的轮询函数中使用。
我想以一种看起来像这样的方式使用静态变量;
var polling_func = function()
{
static var counter = 0;
if (counter == 10)
{
alert('Do action');
counter = 0;
}
counter = counter + 1;
$timeout(polling_func, 1000);
}
polling_func();
不幸的是,我无法在javascript中使用static关键字声明静态变量。我应该如何在我的代码中这样做?
答案 0 :(得分:8)
我认为@ Naeem-Shaikh的回答是最简单的,纯粹的JS。
但是既然你标记了角度,那么还有更多的Angular-ish方法:使用服务。
app.factory('Counter',function() {
return {c:0};
});
然后在您的控制器(或多个控制器)中:
app.controller('MyCtrl',function(Counter) {
Counter.counter++;
});
工厂/服务旨在长期存在,并在短期控制器之间传递方法和变量。
如果你需要的只是像这里的var(即没有方法),那就有一个简写:
app.value('Counter',{counter:0});
然后以相同的方式在控制器中使用它。
答案 1 :(得分:2)
为什么不声明一个全局变量,所以每当调用函数时它都不会改变它。
var counter = 0;
var polling_func = function()
{
if (counter == 10)
{
alert('Do action');
counter = 0;
}
counter = counter + 1;
}
polling_func();
$timeout(polling_func, 1000);