当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 自4.2版以来,Ext JS在树中检查/取消选中节点非常慢

来源:互联网 收集:自由互联 发布时间:2021-06-22
我使用cascadeBy函数和record.set(‘checked’,checked);在Ext JS treepanel中检查/取消选中子节点. 在4.0.7和4.1版本的EXT JS中,所有工作都很快.但是当我将项目升级到4.2版本时,此操作使用的时间超过
我使用cascadeBy函数和record.set(‘checked’,checked);在Ext JS treepanel中检查/取消选中子节点.
在4.0.7和4.1版本的EXT JS中,所有工作都很快.但是当我将项目升级到4.2版本时,此操作使用的时间超过4倍.

这是一个例子:

http://jsfiddle.net/CaV3n/1/

checkchange: function (record, checked, opts) {

    var i=0;
    var start=new Date;
record.cascadeBy(function(e) {

    i++;
    e.set('checked', checked);
    });
    var stop = new Date;
    alert(i +'items '+ (stop-start)+'ms');

}

如果我使用版本4.2.0我有在2677ms渲染的132项

如果我使用版本4.1.0我有在132毫米渲染的132项

如果我使用版本4.1.1我有164个项目在645ms呈现

如何提高树梢速度?

我会在ExtJS论坛中将其记录为“问题/错误”

但要提升性能,请使用suspendLayouts()

checkchange: function (record, checked, opts) {
        var i = 0;
        var start = new Date();
        panel.suspendLayouts();
        record.cascadeBy(function (e) {
            i++;
            e.set('checked', checked);
        });
        panel.resumeLayouts();
        var stop = new Date();
        alert(i + 'items ' + (stop - start) + 'ms');

    }

这是一个工作小提琴:

http://jsfiddle.net/Vandeplas/8Dq2s/

它在1/10之前渲染…更像是60ms!

此方法专为这些“批量”更新而设计.

网友评论