码迷,mamicode.com
首页 > 其他好文 > 详细

angular $digest 运行10次货10次以上会抛出异常

时间:2019-01-07 20:59:33      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:文章   检测   作者   执行   蓝色   ges   watch   数据   监听   

技术分享图片

今天在做项目时,遇到一个问题,红圈处输入其他数字(n多次)也不会报异常,但是有一种特例,即0,1,0,1,0,1这种顺序输入时,输入第13次时,页面计算结果(蓝色圆圈)不会更新,困扰了1天多这个问题,

曾尝试着用watch 函数监听红色圆圈处的值,但是后来发现,让angular 强制更新,但是页面却不更新,最后放弃了这种方法。

在digest循环中,AngularJS会遍历整个$watch列表,所有watcher都会被触发,当一个wathcer被触发时,AngularJS会检测Scope模型相应的数据,如果它发生了变化,那么关联到该watcher的回调函数就会被触发。
  如果执行了一次digest循环后某个值发生了变化,那么AngularJS会再次循环,直至不再有任何变化。这是因为你在$watch中更新某个值,如果该值对应的$watch已在这遍循环通过,AngularJS将检测不到变化无法更新。如果循环运行了10次或更多次,AngularJS会抛出异常并停止。(就算没有更新值,AngularJS也会多运行一次来确保没有改变,也就是至少运行两次)
---------------------
作者:wu50401
版权声明:本文为博主原创文章,转载请附上博文链接!

angular $digest 运行10次货10次以上会抛出异常

标签:文章   检测   作者   执行   蓝色   ges   watch   数据   监听   

原文地址:https://www.cnblogs.com/wu50401/p/10234925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!