这与我的问题有关 - Angular JS ng-repeat consumes more browser memory
我的问题是我需要嵌套的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
吗?
我的情况是内部和外部重复,我显示最初的50个项目并滚动,如果滚动到达相应DOM的末尾,我将限制更新50,以便接下来的50个项目得到显示。
非常感谢任何帮助!
答案 0 :(得分:0)
您可以编写一个指令,将users
和items
作为绑定属性(特别是因为看起来您的内部循环与外部循环无关),然后手动嵌套两个将添加的循环内容到DOM,以及向每个元素添加滚动侦听器。它更难以编码,但观察者却少得多。