倒计时按钮angularjs

时间:2016-04-22 14:30:04

标签: javascript angularjs angularjs-directive

我创建了一个倒计时功能,只有在用户位于浏览器的当前窗口时它才会计算,并且它运行良好,唯一的问题是当我在angularjs控制器中插入我的代码时。它停止工作,上面我把我的代码留给每个人都知道出了什么问题。

JS:

var span = angular.element('#count');
        var counter = 30;
        var timer;

        var startTimer = function() {
            // do nothing if timer is already running
            if (timer) return;

            timer = setInterval(function() {
                counter--;
                if (counter >= 0) {
                    span.innerHTML = counter;
                }
                // Display 'counter' wherever you want to display it.
                if (counter === 0) {
                    alert('this is where it happens');
                    stopTimer();
                }
            }, 1000);
        };

        var stopTimer = function() {
            clearInterval(timer);
            timer = null;
        };

        var onBlur = function() {
            stopTimer();
        };

        var onFocus = function() {
            startTimer();
        };

        var onLoad = function() {
            startTimer();
        };


        angular.element(window).load(onLoad);
        angular.element(window).blur(onBlur);
        angular.element(window).focus(onFocus);

HTML:

<a  class="btn btn-medium btn-orange" href="">
            In<span id="count">30</span></a>

1 个答案:

答案 0 :(得分:1)

不要在角度代码中使用非角度函数,如setTimeout或setInterval。这些功能不会成为摘要周期的一部分,您的观点也不会发生变化。

看看这个例子,创建一个带角度的计时器。

https://codeforgeek.com/2014/09/refresh-div-angularjs-interval/