如何用新数据重绘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'] } ] }); 

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

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

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

 $('#treeId').jstree(true).settings.core.data = newData; $('#treeId').jstree(true).refresh(); 

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

你想要的是redraw(true)

尝试在核心设置中包含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'] } ] }); 

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