当$digest循环被调用时,
当一个摘要循环发生时,我很困惑,是按照每50ms的定时器定期(称之为
here和暗示
here)或者在进入角度上下文的每个事件之后调用定时器(正如
here,
here和
here)?
事情的例子: 在我的模型中,我有一个名为myVar的变量,值为3。 $scope.myVar = 4; // some heavy actions takes place for 3 seconds... $scope.myVar = 5; 假设UI线程不被阻止,用户点击按钮后会看到什么?他会看到只有5还是他会看到4和3秒后5?
我认为
http://blog.bguiz.com/post/60397801810/digest-cycles-in-single-page-apps年的消化循环的描述就是这样
是非常误导,说实话,当提到Angular时,我甚至会说错。引用Pawel Kozlowski,Mastering Web Application Development with AngularJS
为了证明没有轮询,如果你有一个模板 <p>{{state}}</p> 和控制器代码 $scope.state = 'Initial'; // Deliberately *not* using $timeout here $window.setTimeout(function() { $scope.state = 'Changed'; },1000); as in this plunker,则显示给用户的字符串将保持为“初始”,从不更改为“已更改”。 如果您想知道为什么经常会看到$ apply的呼叫,但并不总是这样,那么可能是因为Angular所带来的各种指令(如ngClick或ngChange)将调用$应用自身,然后触发循环。对本地JS事件的事件监听器直接不会这样做,所以他们必须刻意调用$ apply来进行任何反映在模板中的更改。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |