我有一个相当复杂的应用程序,其中包含许多经常更新的不同组件。例如,时钟。
是否可以一次只在页面的一个小节上调用 $apply / $digest ?例如,我不想在每个时钟滴答声中都调用页面上的每个观察者。
我知道我可以通过完全绕过 $scope.$apply 并在指令中手动更新时钟元素来实现这一点。我还有希望吗?
编辑:实际上,我可能想要的是从我要检查的范围开始,而不是 $apply,因为 $apply 在 $rootScope 上启动摘要。这是一种有效的方法吗?
我有一个相当复杂的应用程序,其中包含许多经常更新的不同组件。例如,时钟。
是否可以一次只在页面的一个小节上调用 $apply / $digest ?例如,我不想在每个时钟滴答声中都调用页面上的每个观察者。
我知道我可以通过完全绕过 $scope.$apply 并在指令中手动更新时钟元素来实现这一点。我还有希望吗?
编辑:实际上,我可能想要的是从我要检查的范围开始,而不是 $apply,因为 $apply 在 $rootScope 上启动摘要。这是一种有效的方法吗?
如果你的组件真的是解耦的,你可以隔离那些在他们自己的 Angular 应用实例中生成频繁更新的组件。他们将有独立的消化周期。
您的应用程序仍然可以通信,但需要更多开销。
为了拥有 2 个应用程序,您必须手动启动应用程序(使用bootstrap
而不是ng-app
)。
每当您调用$scope.$apply()
它时,它也会调用$apply()
该范围内的所有范围。如果您想调用$apply()
页面的有限部分,那么该部分需要有自己的范围,您可以通过将控制器添加到页面的该部分来实现。然后,您可以使用该控制器$scope.apply()
在您的部分控制器上使用该控制器更新页面该部分内的范围。
-- 编辑 -- 有关 $apply 和 $digest 之间差异的更多详细信息,请参阅下面的评论。
另见: