如何在不重新加载的情况下更新jstree节点值

Gab*_*ros 16 jstree

我有一个用以下代码创建的jstree:

$('#mytree').jstree({"core": { "data" : value
                             , "themes" : { "dots": false
                                          , "icons": false }
                             }
                    }
                   );
Run Code Online (Sandbox Code Playgroud)

我可以通过以下代码使用新数据重建它:

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

但是当你拥有大量节点时它会很昂贵.我想要实现的是,我想更新元素的值(即node.text部分)而不重建整个树.我通过一个消息中的websocket获取新值(完整的JSON字符串,new_data但结构不会改变).我怎样才能做到这一点?谢谢!

Gab*_*ros 22

你需要的不是,refresh()而是redraw()代码

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).redraw(true);
Run Code Online (Sandbox Code Playgroud)

您可以在jstree API中找到这些函数.

根据zmirc的建议,在v3.1中使用:

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

  • 使用v 3.1.0它似乎不起作用,除非redraw(true)替换为refresh(). (5认同)
  • 我一直在尝试使用它,它似乎工作,但对象的状态似乎没有更新.是否可以强制新绘制的树符合new_data中提供的状态选项? (3认同)