所以,我的问题。 我用一些数据初始化了我的树:
$('#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中的刷新和重绘方法,但是没有成功。
你能给我建议吗,如何更新树(没有销毁 - >创建新实例(它可以工作,但会影响性能))?
答案 0 :(得分:14)
在版本3中,您可以重新加载树:
$('#treeId').jstree(true).settings.core.data = newData;
$('#treeId').jstree(true).refresh();
答案 1 :(得分:7)
refresh()
会将树刷新到它的初始状态,这意味着删除了新创建的节点
你想要的是redraw(true)
答案 2 :(得分:6)
尝试在核心设置中包含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');
。
答案 3 :(得分:0)
你需要这个
$('#tree').jstree(true).refresh(false, true);
刷新参数:skip_loading?:布尔值,忘记状态?:任何 参数:
skip_loading=false
意思是:你想看到加载指示器
forget_state=true: forget previous state (selections, data, etc)