我创建了一个倒计时功能,只有在用户位于浏览器的当前窗口时它才会计算,并且它运行良好,唯一的问题是当我在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>
答案 0 :(得分:1)
不要在角度代码中使用非角度函数,如setTimeout或setInterval。这些功能不会成为摘要周期的一部分,您的观点也不会发生变化。
看看这个例子,创建一个带角度的计时器。
https://codeforgeek.com/2014/09/refresh-div-angularjs-interval/