如果我在控制器中有以下AngularJS代码:
$scope.s = "ha ha";
$interval(function() {
$scope.s = "hmm ha ha " + new Date().getTime();
}, 1000);然后,它将更改模型,并使双向绑定工作,因此在屏幕上,任何
{{ s }}将每秒显示一个新字符串。
但是在使用setInterval()之后。我使用了它,但它不会更新视图...我认为它应该改变$scope.s,但是为什么它不更新视图,而$interval()会呢?
(如果是$timeout()与setTimeout(),则相同)。
发布于 2016-01-26 15:31:05
因为在使用setInterval时,angular无法知道回调函数已经被调用并更新了作用域,因此它不知道必须重新计算视图中的表达式并刷新DOM。
当使用$interval时,angular知道回调函数何时被调用,因此知道它必须在调用后重新计算表达式,因为作用域可能已经改变。
您可以告诉angular您使用$scope.$apply()修改了setInterval回调函数中的作用域。
https://stackoverflow.com/questions/35008733
复制相似问题