Angular.js ng-repeat +无限滚动导致太多观察者
angular.js ng-repeat + infinite scroll causing too many watchers
我有这样的代码:
<section infinite-scroll='load()'>
<div class="product" ng-repeat="product in products | limitTo:total">
..
</div>
</section>
在控制器:$scope.products = []; // array of all products
$scope.load = function() {
$scope.total += 5;
};
当用户滚动到底部时,控制器增加limitTo变量,这样他将看到5个以上的产品。如果有40个产品站点有4700个观察者。如果他继续滚动,可能会有1.2万观众…有什么好办法吗?每个产品都有用于添加到购物车操作的各种输入。
我正在寻找虚拟重复(例如。这个),但是它使用了一个固定高度的容器,所以这样滚动产品会很难看,而且是完全错误的。
Angular会在你的每个绑定表达式上放置一个监视。你必须减少代码中绑定表达式的数量,才能看到手表数量的减少。
然而,你可以尝试通过跟踪来帮助angular找出不应该重新计算的内容来缓解这个问题。
<section infinite-scroll='load()'>
<div class="product" ng-repeat="product in products | limitTo:total track by $index">
..
</div>
</section>
为了删除不需要的表,请考虑只呈现对用户可见的内容,如果可能的话,将其他所有内容替换为空元素。
您没有说明该列表是否应该是可编辑的。也就是说,我不认为一个可编辑的怪物列表(数千个元素)是可行的。
在我正在进行的一个项目中,我们有与您所呈现的相同的用例。到目前为止,列表中大约有5000个元素,它似乎工作得很好:我们已经竭尽全力使用一次性绑定,并创建了高效的目录,从而尽可能快地释放它们的监视器。
对于编辑,我们传递被点击的元素,并在单独的上下文中打开它。
相关文章:
- 未激发路由的控制器属性上的观察者
- 一个html元素的克隆次数太多
- 将属性设置为未定义时未通知观察者
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- 检测 DIV 的高度何时变化,而无需轮询或突变观察者
- 使用.slice分页选择了太多项目
- 堆排序实现进行了太多比较
- JavaScript:为什么Addy's观察者模式
- 如何在不每秒调用太多次的情况下通过Soundcloud解析api进行循环
- 如何修复“;太多递归”;ReactJS中的错误
- 为什么fs.readFile在windows上花费太多时间
- 如何避免webGL着色器加载给cpu带来太多负载
- node.js 需要太多的 TCP 套接字
- JavaScript循环迭代太多
- 设置多个观察程序以触发动态事件的角度替代解决方案 - 优化的观察者模式
- Ember.Object中的多个属性或单个观察者
- 对象.observe -支持多个观察者
- 聚合物自定义元素观察者开火太早
- Rx JS订阅观察者到多个可观察对象
- Angular.js ng-repeat +无限滚动导致太多观察者