Answers:
scope.$digest()将会在当前范围及其所有子级上触发监视程序。scope.$apply将评估传递的函数并运行$rootScope.$digest()。
第一个更快,因为它需要评估观察者的当前范围及其子级。第二个比较慢,因为它需要评估观察者$rootScope及其所有子作用域。
当其中一个观察者发生错误并且您使用时scope.$digest,不会通过$exceptionHandler服务进行处理,因此您需要自己处理异常。scope.$apply在try-catch内部使用块并将所有异常传递到$exceptionHandler。
$digest不仅会在当前范围内触发监视者,还会在其所有子级上触发。
正如文档本身所提到的,您每次执行$ digest循环时都会执行$scope.$apply。根据有关范围的开发人员指南
计算表达式后,$ apply方法执行$ digest。在$ digest阶段,范围将检查所有$ watch表达式并将它们与先前的值进行比较。
并根据Scope API 文档
通常,您不直接在控制器或指令中调用$ digest()。相反,对$ apply()的调用(通常从指令内部)将强制$ digest()。
因此,您不应显式调用$digest,而调用$apply方法将触发摘要循环。
$digest还可以在示波器的孩子叫什么名字?