jsTree排序功能非常慢

时间:2013-02-19 18:33:02

标签: jquery jstree

我正在为Delicious书签撰写Chrome扩展程序。我的background.js文件在浏览器打开时获取书签,并创建jsTree构建正确树所需的对象。

如果我禁用jsTree的排序插件,单击弹出窗口时会立即显示书签。如果启用排序功能,则点击和显示数据之间会有约2秒的延迟。

我尝试在后台脚本中对所有数据进行预先排序,并将其传递给预先排序的弹出窗口,但jsTree不会遵循此排序数据。

我只有~90个标签和~400个书签。有没有配置选项,我可以使用它来加快速度?这就是我的jsTree的样子。

$('#jstree').jstree({
    'close_all': -1,
    'core': {
        'animation': 0
    },
        'json_data': {
        'async': true,
        'data': data
    },

    'progressive_render': true,
    'themes': {
        'theme': 'classic',
        'dots': false,
        'icons': true
    },

    'sort': function (a, b) {
        return this.get_text(a) > this.get_text(b) ? 1 : -1; 
    },

    'types': {
        'valid_children': [ 'folder' ],
        'types': {
            'folder': {
                'valid_children': [ 'file' ],
                'max_depth': 1
            },
        }
    },

    'plugins': [
        'json_data',
        'themes',
        'sort',
        'types',
    ]
});

1 个答案:

答案 0 :(得分:2)

jsTree使用本机数组sort方法,因此唯一可以改进的是调用get_text,但我怀疑它可以更快。

如果您的数据已预先排序 - 只需从plugins配置数组中删除排序插件即可。排序插件无法“知道”数据已经排序,只需删除插件即可。