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