我正在为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',
]
});
答案 0 :(得分:2)
jsTree使用本机数组sort
方法,因此唯一可以改进的是调用get_text
,但我怀疑它可以更快。
如果您的数据已预先排序 - 只需从plugins
配置数组中删除排序插件即可。排序插件无法“知道”数据已经排序,只需删除插件即可。