正如标题所述,这似乎只会触发一次。我需要它不断运行。
我的控制器内的代码:
setTimeout(function () {
$scope.test();
console.log('starting test');
// check and update dates every minute (hopefully language will be in the bridge)
$scope.testInterval = setInterval($scope.test(), 1000);
}, 2000);
$scope.test = function () {
console.log('test');
};
控制台输出:
test
starting test
test
然后什么都没有。停止工作。
答案 0 :(得分:1)
在setinterval行中调用scope .test()。您需要传递函数而不是函数的结果。
$scope.testInterval = setInterval($scope.test(), 1000);
变为
$scope.testInterval = setInterval($scope.test, 1000);
此外,由于setInterval在设置间隔之前第一次不需要额外的$ scope.test()时立即触发。
答案 1 :(得分:1)
由于您正在调用该函数,因此您应该使用
$scope.testInterval = setInterval($scope.test, 1000);
你应该注意的区别是$ scope.test没有括号()
,因为你想调用这个函数而不是这个函数的执行返回值。
如果您已经编写$scope.test()
,它将返回undefined,并且您的间隔将不会运行(因为您的setInterval函数参数未定义)。如果你写$scope.test
,你的间隔会调用测试函数。
答案 2 :(得分:0)
使用$interval
代替setInterval
。
var interval = $interval(function() {
console.log('say hello');
}, 1000);
如果你想阻止它:
$interval.cancel(interval);