【问题标题】:Reduce the number of $watches created by ui-grid减少 ui-grid 创建的 $watches 数量
【发布时间】:2015-10-20 16:55:32
【问题描述】:

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

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

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

检查 $watches 我们得到了 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

每个单元格元素有 2-4 个手表。

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

在大多数情况下,我们不需要观察特定网格单元中的机会。

我们可以做些什么来减少 ui-grid 创建的 $watches 的数量?

提前致谢, 高兴。

【问题讨论】:

  • 查看此文档 - github.com/angular-ui/ui-grid/blob/master/misc/tutorial/…。有一个名为 'fastWatch' 的选项,在你的 'gridOptions' 中将其设置为 true 将使 Angular 只关注数据数组和引用的长度,而不是每个特定的索引。
  • 10x 。我使用了 fastWatch 选项,但 $watchs 计数没有变化:-(
  • 您是否尝试过“flatEntityAccess”中提到的其他选项?
  • 是的。没有看到任何重大影响。 10 倍 :-)

标签: javascript angularjs performance angular-ui-grid


【解决方案1】:

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

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

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

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

高兴。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多