1,什么时候会$digest
- DOM事件,譬如用户输入文本,点击按钮等。(ng-click)
- XHR响应事件 ($http)
- 浏览器Location变更事件 ($location)
- Timer事件($timeout, $interval)
- 执行$digest()或$apply()
如:
<div ng:app ng-controller="Ctrl"> {{message}}</div>
function Ctrl($scope) {
$scope.message = "Waiting 2000ms for update";
setTimeout(function () {
$scope.message = "Timeout called!"; // AngularJS unaware of update to $scope
}, 2000);}
页面上的message没有更新,因为setTimeout为原生的方法,$timeout为对应的angular封装,内部调用了$apply(),所以会运行脏值检测。心好累_
最后付张图
不是一段时间后的循环