javascript - 使用 ng-If 和 ng-repeat 在显示大集合时隐藏不可见的项目

标签 javascript angularjs

我收集了大量元素 - 约 2000 件元素。

使用 ng-repeat 显示时,观察者数量为 16K,DOM 几乎不存在。

我正在尝试使用 ng-if 显示表格中的项目,以便只有可见的项目才是可见的。

我尝试过实现无限滚动,但并不能解决观察者数量巨大的问题。所以我决定最好不要渲染不可见的元素。

是否有一个查询可以放在每个元素上,快速告诉我该项目在页面上是否可见?

我的代码是:

<tr ng-repeat="mi in vm.displayDNAList track by $index">
 <span>{{ ::mi.name }}</span>
</tr>

最佳答案

由于呈现大量 DOM 元素的大量项目集合,即使是 ng-repeat 中最微不足道的项目处理也可能会阻塞您的应用程序。 检查元素是否在 View 中的 DOM 相关解决方案不会告诉您嵌套组件是否已完全加载和渲染,从而导致错误。

我对这个问题的解决方案是 Angular 的 limitTo : limit: begin 过滤器,以及 iScroll 或 native 滚动顶部和滚动底部回调,它们根据浏览方向提高或减少 Controller 中的开始索引 - 一种前端分页,其中只有一个具体的项目数量显示在 DOM 中。

<tr ng-repeat="item in items | limitTo : 100 : 600 track by $index">
    <span>{{ item.name }}</span>
</tr>

您需要找到最适合该应用的最佳 limitTo 数字,同时保持其轻便灵活。

关于javascript - 使用 ng-If 和 ng-repeat 在显示大集合时隐藏不可见的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38685617/

相关文章:

css - AngularJS CSS 转换 : List Item with Controls That Slide In/Out

angularjs - 从指令将参数传递给父 Controller 方法

javascript - Phaser Box2d - 锁定一个方向的拖动

javascript - 从数组中获取图像并使用javascript在html中设置为类的背景图像

javascript - 对 php 的 Ajax 请求在本地主机上工作,但不在实时服务器上工作

java - 如何强制我在 Spring 中的所有页面使用 https 协议(protocol)

javascript - ionic ng 模型无法正常工作

javascript - 使用鼠标上下绘制 Canvas

javascript - ng-repeat 重复,但为空

javascript - ng-options 作为指令参数