AngularJS :使用$timeout,而不是setTimeout (例子)

・1 分钟阅读

有些情况下需要执行某种超时操作,我们经常使用JavaScript函数的setTimeout()来实现。

但是,如果在sdm应用程序中使用setTimeout(),我们还需要使用$scope.$apply()来确保对范围的任何更改(即,在视图中绑定的数据)。

AngularJS为此提供了一个方便的包装器: $timeout() -我们执行$apply()调用,所以,我们不需要这么做,很魔幻!


function Ctrl($scope, $timeout) {
 $scope.timeInMs = 0;

 var countUp = function() {
 $scope.timeInMs+= 500;
 $timeout(countUp, 500);
 }

 $timeout(countUp, 500);
}

下面是一个JsFiddle展示它的工作: http://jsfiddle.net/otupman/fq4vg/

更新和警告 - 如果你使用$ timeout创建本质上是一个interval,它会破坏你的E2E测试,解决方法是暂时设置标准setTimeout :( :( : (

关于Angular github问题的更多信息: https://github.com/angular/angular.js/issues/2402

方玉 profile image