面试趟过的坑之angular脏值检测机制

1,什么时候会$digest

  • DOM事件,譬如用户输入文本,点击按钮等。(ng-click)
  • XHR响应事件 ($http)
  • 浏览器Location变更事件 ($location)
  • Timer事件($timeout, $interval)
  • 执行$digest()或$apply()
    如:
{{message}}
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(),所以会运行脏值检测。心好累_
最后付张图

面试趟过的坑之angular脏值检测机制_第1张图片
1.jpg

不是一段时间后的循环

你可能感兴趣的:(面试趟过的坑之angular脏值检测机制)