如何用新数据重绘jstree树?

22 jquery jstree

所以,我的问题.我用一些数据初始化了我的树:

$('#tree').jstree({
    'core' : {
        'data' : [
            'Simple root node',
            {
                'id' : 'node_2',
                'text' : 'Root node with options',
                'state' : { 'opened' : true, 'selected' : true },
                'children' : [ { 'text' : 'Child 1' }, 'Child 2']
            }
        ]
    });
Run Code Online (Sandbox Code Playgroud)

但经过一些动作后,我想用新数据重绘树.我尝试使用API中的刷新重绘方法,但它没有成功.

你能给我建议,如何刷新树(没有销毁 - >创建新实例(它可以工作,但会影响性能))?

小智 14

在版本3,您可以重新加载树:

$('#treeId').jstree(true).settings.core.data = newData;
$('#treeId').jstree(true).refresh();
Run Code Online (Sandbox Code Playgroud)

  • 也许不是,但它确实帮助了我. (3认同)

小智 8

refresh() 将树刷新到它的初始状态,这意味着删除了新创建的节点

你想要的是什么 redraw(true)


Nei*_*ell 7

尝试在核心设置中包含check_callback参数(包括初始加载)并确保将其设置为true.然后你应该能够看到任何改变.没有这个,我发现我没有看到替换数据,只看到原始数据.

$('#tree').jstree({
'core' : {
    'check_callback' : true,
    'data' : [
        'Simple root node',
        {
            'id' : 'node_2',
            'text' : 'Root node with options',
            'state' : { 'opened' : true, 'selected' : true },
            'children' : [ { 'text' : 'Child 1' }, 'Child 2']
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

这为我处理了刷新部分,但根据你正在做什么,你也可以打电话$('#tree').jstree('refresh');.

  • 我尝试包含'check_callback':true,但对我来说是不成功的 (5认同)