在Angularjs中,我可以一次应用/渲染一个范围吗?

时间:2013-07-25 22:45:32

标签: performance angularjs

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

是否可以立即在页面的子部分调用$ apply / $ digest?例如,我不想在页面上为每个时钟节拍打电话给每个观察者。

我知道我可以通过绕过$ scope来实现这一点。$ apply完全应用,只需在指令中手动更新时钟元素。我有什么希望吗?

编辑:实际上,看起来像MAYBE我想要的是dun $ digest,从我想检查的范围开始,而不是$ apply,因为$ apply开始关闭$ rootScope上的摘要。这是一种有效的方法吗?

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

2 个答案:

答案 0 :(得分:0)

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

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

另见:

答案 1 :(得分:0)

如果您的组件实际上是分离的,那么您可以隔离那些在自己的角度应用实例中生成频繁更新的组件。他们将有独立的消化周期。

您的应用仍然可以进行通信,但涉及的开销会更多。

要拥有2个应用,您必须手动启动应用(使用bootstrap代替ng-app)。

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