AngularJS如何管理ng-repeats的范围?

时间:2015-01-05 16:51:17

标签: angularjs angularjs-scope angularjs-ng-repeat

我几天前在程序员stackexchange上问了这个问题,没有收到任何回复,所以我想我会在这里试试。

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

它是否会破坏我指令中所有先前隔离的范围并创建新范围,或者那些旧的孤立范围现在是孤立的,并且随着越来越多的摘要发生而导致内存泄漏?

作为开发人员,我应该注意并确保处理任何隔离范围的销毁吗?

1 个答案:

答案 0 :(得分:0)

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

  1. 您可能不需要观察变量。如果您只想显示一些不经常更新的数据,您也可以删除双重绑定,因此angular不必在$scope
  2. 中为它们创建条目
  3. 从不将函数结果用作ng-repeat值,因为该函数将在每$digest个周期运行
  4. 请勿使用过滤器,因为它们会在$digest周期内被调用两次并减慢ng-repeat
  5. Here有关ng-repeat和角度表现的更多信息。