当添加大量事件(数百个)时,我们在DHTMLX Scheduler中发现了一个奇怪的问题。想象一下这些事件都在1月至3月的日期范围内。如果用户当前正在查看该日期范围,则添加事件的代码大约需要15秒钟才能运行。但是,如果用户正在查看,例如Mar-May,则同一部分代码会立即运行。不仅如此,在代码立即运行之后,您可以立即滚动到Jan-Mar范围并查看所有200个事件;他们渲染不到一秒钟。

我们认为问题一定是类似添加每个事件后Scheduler进行的完全重绘。目前,我们已经添加了变通方法,即将用户视图的日期更改为遥远的将来,添加所有事件,然后将其日期更改回原来的日期。但是,这似乎是一种黑客行为,我们宁愿选择“ scheduler.config.suppress_repaint”之类的选项,也可以在添加事件时将其设置为“ true”。

像这样的东西存在吗?在Scheduler文档中,我们找不到有关此事的任何提及。任何帮助,不胜感激。

最佳答案

要一次添加很多事件,可以使用scheduler.parse而不是scheduler.addEvent

添加每个事件后,此代码将重新绘制调度程序

//slow
for (var i=1; i<100; i++)
    scheduler.addEvent({ id:i });


这个只会重画调度程序一次

//fast
var data = [];
for (var i=1; i<100; i++)
    data.push({ id:i });
scheduler.parse(data, "json");

关于javascript - 在DHTMLX Scheduler中添加大量事件时的性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22794025/

10-11 09:18
查看更多