快速提问:在下面的代码中我只调用isSpecificPage()一次函数,为什么它控制台.log两次?
<div ng-hide="isSpecificPage()">
<p>Hello!</p>
</div>
Run Code Online (Sandbox Code Playgroud)
Angular会监视您的ng-hide功能,以便每个摘要周期都可以看到结果是否发生了变化(因此,如果需要从隐藏更改为显示您的元素,反之亦然).
当评估观察的函数(期间$digest)如果它们中的任何一个已经从之前改变时,$digest那么Angular知道该改变可能会波及其他观察的函数(可能更改的变量用于另一个观察的函数).因此,每个手表都会被重新评估(也称为脏处理),直到所有手表都没有变化.因此,通常你会看到2个调用每个摘要的观察函数,有时甚至更多(通过它的10个循环中最多10个放弃并报告错误,表示它无法稳定).
这里有更多关于watch和digest:
http://docs.angularjs.org/api/ng.$ rootScope.Scope
http://www.benlesh.com/2013/08/angularjs-watch-digest-and-apply-oh-my.html
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |