KO在较大的数据网格上表现不佳

时间:2013-06-11 04:40:57

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

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

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

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

此外,映射插件用于将json对象动态转换为视图模型。然而,与数据绑定的行相比,执行映射的行似乎没有花费太多时间。

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

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并发布在Knockout Google小组中。迈克尔贝斯特推荐trying some custom bindings

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

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

答案 1 :(得分:0)

使用映射插件时的一个建议是仅映射您需要的属性。将所有属性映射到大型数据集中的可观察对象可能是真正的性能杀手。