6

我正在为 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',
    ]
});
4

1 回答 1

2

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

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

于 2015-05-08T07:04:39.453 回答