3

这与我的问题有关 - Angular JS ng-repeat 消耗更多浏览器内存

我的问题是我需要嵌套的 ng-repeats 并且嵌套的 ng-repeats 会消耗更多的内存,因为注册了更多的手表。

<table>
  <thead><td>Id</td><td>Name</td><td>Ratings</td></thead>
  <tbody>
   <tr ng-repeat="user in users | orderBy:'name' | limitTo:display_limit">
    <td>{{user.id}}</td>
    <td>{{user.name}}</td>
    <td><div ng-repeat="item in items | orderBy:'rating' | limitTo:inner_display_limit">{{item.rating}}</div></td>
   </tr>
  </tbody>
</table>

在我的例子中,外部 ng-repeat 和内部 ng-repeat 操作的对象数量可以达到 1000 个。正如@Liviu 在答案中指出的那样,each of the outer ng-repeat registers watch on the inner ng-repeat这会导致使用大量内存。有没有办法avoid the outer ng-repeat from registering watches on inner ones通过编写我们自己的自定义指令来实现?

我的情况是在内部和外部 ng-repeats 中,我显示最初的 50 个项目,并且在滚动时,如果滚动到达相应 DOM 的末尾,我将限制更新 50,以便显示接下来的 50 个项目。

任何帮助深表感谢!

4

1 回答 1

0

您可以编写一个指令,将usersitems作为绑定属性(特别是因为您的内部循环似乎独立于外部循环),然后手动嵌套两个循环,将内容添加到 DOM,并为每个元素添加一个滚动侦听器. 这是更困难的编码,但观察者却少得多。

于 2013-08-25T05:44:58.737 回答