2015-01-05 10 views
0

几天前我在程序员stackexchange上问了这个问题,并没有收到任何回复,所以我想我会在这里尝试。AngularJS如何在ng-repeats中管理范围?

我有一个约60行20列的表。每个单元格都有一个具有隔离范围的指令。我使用了2个嵌套的ng-repeats来生成表(一个用于行,一个用于列),但是我想知道当摘要循环导致ng-repeat中的指令重新生成时,角度如何处理范围?

它是否销毁我的指令中的所有先前的隔离范围并创建新的范围,还是那些现在孤立在某处的旧隔离范围和随着越来越多的摘要发生内存泄漏?

作为一名开发人员,我是否应该意识到这一点,并确保处理销毁任何独立的范围?

+0

每个'ng-repeat'迭代都创建一个新的范围。每个迭代的作用域都是另一个作用域的兄弟,而指令的孤立作用域仅存在于指令中。 –

回答

0

ng-repeat会在您的$scope中为您显示的所有值创建一个$$hashKey属性。每当调用$digest时,它都会检查值是否更改。由于多种原因,ng-repeat通常是缓慢角度应用中的罪魁祸首之一。

  1. 您可能不需要观察变量。如果你只想显示一些不经常更新的数据,你可能会删除双重绑定,因此角度不需要为它们创建条目。$scope
  2. 从不从不使用函数结果作为NG-重复值,因为该功能将在每个$digest周期
  3. 不要使用过滤器运行,因为他们得到的$digest周期称为两次,拖慢一下NG-的ng-repeat

Here的一些详细信息重复和角度表现。