我们可以在 Angular js 中不使用 $apply 来触发 $digest 吗?

Can we trigger $digest without using $apply in Angular js?

当我经历作用域的生命周期时,我发现 $digest 应该被 $apply 调用。但我想知道是否可以在没有 $apply 的情况下启用 $digest。如果有,缺点是什么

当您调用 $scope.$apply() 函数时,它会调用 $rootScope.$digest()。因此,摘要循环从 rootScope 开始并调用所有子范围。

您可以使用 $scope.$digest() 调用摘要,但这只会启动子作用域的循环。有时绑定不会正确发生,因为摘要循环不是从根范围开始的。

您可以查看 this 文章以了解摘要循环的工作原理

$scope.$digest() 函数遍历 $scope 对象及其子对象 $scope 中的所有手表(如果有的话)。当 $digest() 遍历手表时,它会为每个手表调用值函数。

$scope.$apply()函数接受一个函数作为参数执行,然后在内部调用$scope.$digest()