繁体   English   中英

在Angularjs控制器中用作计数器的静态javascript变量

[英]Static javascript variable to be used as counter in Angularjs controller

我想创建一个静态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关键字声明静态变量。 我应该如何在我的代码中这样做?

我认为@ 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});

然后以相同的方式在控制器中使用它。

为什么不声明一个全局变量,所以每当调用函数时它都不会改变它。

 var counter = 0;
var polling_func = function()
{


    if (counter == 10)
    {
        alert('Do action');
        counter = 0;
    }
    counter = counter + 1;
}
polling_func();
$timeout(polling_func, 1000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM