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

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(),所以会运行脏值检测。心好累_
最后付张图

1.jpg

不是一段时间后的循环

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.类库( 提供类方法 ) 和框架 类库提供一系列的函数和方法的合集,能够加快你写代码的速度。但是主导逻辑的还是自...
    w_zhuan阅读 1,835评论 0 8
  • AngularJS and scope.$apply 翻译自Jim Hoskins的教学博客 当你开始使用Angu...
    bianer233阅读 1,342评论 0 3
  • Angular面试题 一、ng-show/ng-hide与ng-if的区别? 第一点区别是,ng-if在后面表达式...
    w_zhuan阅读 5,590评论 0 26
  • 韶华词 星云年日斓,风雨岁月英。 春秋随流幻,寒暑迁会冥。
    吾兮无兮阅读 173评论 0 1
  • 我觉得我们可能是挺特殊的一代。 这种特殊不是说多值得炫耀,而是某种介于年代、历史、命运之间的特色。 我们在贫与富的...
    许光阅读 253评论 0 0