javascript - 在较大的数据网格上 KO 性能较差

标签 javascript knockout.js knockout-2.0 knockout-mapping-plugin

我有一个大小合适的数据网格(基本上是一个交互式表格),大约有 600 行。

我注意到将 KO 绑定(bind)到这个网格实际上需要大量时间,尤其是。在数据绑定(bind)期间。在较旧的浏览器上情况更糟,处理器达到峰值几乎一分钟。

最大的性能 block 似乎来自执行数据绑定(bind)的行,注意:这是初始数据绑定(bind),因此许多处理大型更新的回复似乎不适用。

还使用映射插件将 json 对象动态转换为 View 模型。然而,与数据绑定(bind)的行相比,执行映射本身的行似乎并没有占用太多时间。

不幸的是,由于要求,分页是不可能的。是否有关于优化更大 View 模型和 KO 的一般提示/指示?

最佳答案

我遇到了类似的问题,并发布在 Knockout Google 群组中。迈克尔最佳推荐trying some custom bindings .

由于您正在进行编辑,因此他的 knockout 绑定(bind)对您不起作用。但您可以尝试knockout-repeat捆绑。它应该比 Knockout 的原生 foreach 更快(以 HTML 中一些额外的复杂性为代价)。最后一种选择是创建您自己的绑定(bind),一次性构建您的网格。理论上,在内存中构建整个网格并将其完整地填充到 DOM 中会比以离散位修改 DOM 更快。

KoGrid 可能不是您想要的,但源代码中可能嵌入了一些提示和技巧。

关于javascript - 在较大的数据网格上 KO 性能较差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036618/

相关文章:

javascript - 移动 DOM 元素后 KnockOut 绑定(bind)中断

javascript - 与 Bootstrap 表内的嵌套循环进行淘汰赛绑定(bind)

asp.net-mvc - 如何访问和绑定(bind) Upshot 提供的实体元数据(通过客户端上的 JavaScript)?

javascript - 使用 WT(Witty) 的 Javascript 函数。

javascript - 从单个文件加载js

javascript - 更新 Knockout.js Observable 数组元素值

javascript - 点击后 Knockout.js 输入焦点

javascript - 在 js/jquery 中将 datetime-local 转换为 UTC 时间

javascript - 使用 vue.js 显示 json 结果

javascript - 在 Knockout 中绑定(bind) Json