减少ui-grid创建的$ watch的数量

Ela*_*sch 6 javascript performance angularjs angular-ui-grid

)首先,我只想对这个伟大的项目表示感谢.

我们将ui-grid集成为表格网格的一部分,由于某些未知原因,ui-grid生成的监视数量对于我们尝试处理的数据量来说是巨大的.

例如:grid - 9列表,包含20行基于简单文本的单元格,没有任何自定义单元格模板

检查$ watch我们获得960手表的数量.

试图调试这个问题,我们打印了每个监视他的元素,大多数时候我们都有这样的元素:

[div#1445359168448-19-uiGrid-001Z-cell.ui-grid-cell.ng-scope.ui-grid-coluiGrid-001Z, context: div#1445359168448-19-uiGrid-001Z-cell.ui-grid-cell.ng-scope.ui-grid-coluiGrid-001Z]0: div#1445359168448-19-uiGrid-001Z-cell.ui-grid-cell.ng-scope.ui-grid-coluiGrid-001Zcontext: div#1445359168448-19-uiGrid-001Z-cell.ui-grid-cell.ng-scope.ui-grid-coluiGrid-001Zlength: 1__proto__: n[0]
 watchers 4
Run Code Online (Sandbox Code Playgroud)

每个细胞元素有2-4个手表.

我们使用简单的数据结构和基本的columnDefs(字段+显示名称).

在大多数情况下,我们不需要关注特定网格单元中的机会.

我们有什么办法可以减少ui-grid创造的$ watch的数量?

谢谢,提前.

Ela*_*sch 0

结论 - 使用 row*col $$watchers 被用作使用滚动虚拟化性能提升的一部分。任何消除这种行为的方法都不起作用。

我们决定使用另一种方法,即使用轻量级的智能表 ,我们喜欢它的想法,不是封装/隐藏表/网格布局创建,而是它的一组指令(插件)允许您以声明的方式组合表行为。

使用声明式方式 = 使用 Angular ng-repeat 并直接查看表格模板,这非常简单,而且不太容易让 CSS 开发人员添加样式。

我们仍然不能将其用作 CRM 解决方案所需的复杂网格基础设施 - 因此我们仍在寻找解决方案 - 也许是 Telerik UI Table

埃拉德。