Angularjs控制器中用作计数器的静态javascript变量
我想创建一个静态javascript变量,用作Angularjs控制器内的计数器。此静态变量将在轮询函数中使用,该函数将被重复调用 我希望以如下方式使用静态变量:Angularjs控制器中用作计数器的静态javascript变量,javascript,angularjs,static-variables,Javascript,Angularjs,Static Variables,我想创建一个静态javascript变量,用作Angularjs控制器内的计数器。此静态变量将在轮询函数中使用,该函数将被重复调用 我希望以如下方式使用静态变量: var polling_func = function() { static var counter = 0; if (counter == 10) { alert('Do action'); counter = 0; } counter = counter +
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关键字声明静态变量。我应该如何在代码中这样做呢?为什么不声明一个全局变量,这样在调用函数时它就不会更改值
var counter = 0;
var polling_func = function()
{
if (counter == 10)
{
alert('Do action');
counter = 0;
}
counter = counter + 1;
}
polling_func();
$timeout(polling_func, 1000);
我认为@Naeem Shaikh的答案是最简单的,而且是纯JS 但是,既然您标记了angular,那么有一种更像angular的方法:使用服务
app.factory('Counter',function() {
return {c:0};
});
然后在控制器(或多个控制器)中:
工厂/服务是长寿命的,在短命的控制器之间传递方法和变量
如果您只需要像这里这样的一个var(即没有方法),那么有一个简写:
app.value('Counter',{counter:0});
然后以同样的方式在控制器中使用它。您的解决方案听起来如此简单可行,以至于我觉得自己像个白痴:)被否决了。但这并不能完全回答我的问题。我还是投了反对票。。无论如何,我会解释,这个答案正是op所需要的,他问是否有可能创建一个静态变量,这就是我的答案。解释如何为计数器创建服务超出此问题的范围。:)嗯,我是OP,我投了更高的票。我喜欢这个简单的解决方案。尽管我也提供了另一个解决方案,但我还是投了赞成票!我很少投反对票,除非它真的太离谱了。我仍然喜欢简单的解决方案,因为我能做到。选择您的答案作为答案。在Angular中,服务是单例的。因此,您可以为任何控制器创建执行此操作的
反服务。那么,计数器可能是服务范围的一部分。这个答案非常符合角度要求。。尼斯:)我记得在我学习Perl的早期,我学到的第一件事是,“每件事都有多种方法来做,而且多种方法都同样有效。”虽然你的答案更正确,因为它更恰当地回答了我的问题,但我更喜欢Naeem Shaikh的答案,因为这是我能做的。对不起,不要道歉!你选择最好的一个,如果你有两个,但其中一个更适合你,选择一个最好的答案,然后投票给其他人。通过在此处回答,其他处于不同情况的人可能可以使用它。:-)
app.value('Counter',{counter:0});