1

我有一个相当复杂的应用程序,其中包含许多经常更新的不同组件。例如,时钟。

是否可以一次只在页面的一个小节上调用 $apply / $digest ?例如,我不想在每个时钟滴答声中都调用页面上的每个观察者。

我知道我可以通过完全绕过 $scope.$apply 并在指令中手动更新时钟元素来实现这一点。我还有希望吗?

编辑:实际上,我可能想要的是从我要检查的范围开始,而不是 $apply,因为 $apply 在 $rootScope 上启动摘要。这是一种有效的方法吗?

http://plnkr.co/edit/C8aOswf46qx2GoD5uL9Y?p=preview

4

2 回答 2

0

如果你的组件真的是解耦的,你可以隔离那些在他们自己的 Angular 应用实例中生成频繁更新的组件。他们将有独立的消化周期。

您的应用程序仍然可以通信,但需要更多开销。

为了拥有 2 个应用程序,您必须手动启动应用程序(使用bootstrap而不是ng-app)。

请参阅此示例:http ://plnkr.co/edit/K3bnACFi79g5Kh0kFS66?p=preview

于 2013-07-26T02:25:33.470 回答
0

每当您调用$scope.$apply()它时,它也会调用$apply()该范围内的所有范围。如果您想调用$apply()页面的有限部分,那么该部分需要有自己的范围,您可以通过将控制器添加到页面的该部分来实现。然后,您可以使用该控制器$scope.apply()在您的部分控制器上使用该控制器更新页面该部分内的范围。

-- 编辑 -- 有关 $apply 和 $digest 之间差异的更多详细信息,请参阅下面的评论。

另见:

于 2013-07-25T23:00:31.237 回答