如何使用新的JSON数据刷新jsTree

How to refresh a jsTree with new JSON data?

本文关键字:数据 刷新 jsTree JSON 何使用      更新时间:2023-11-07

我有一个文件上传元素,它在更改时扫描文件名,并做一些事情来获得有效的treeJSON变量。当函数第二次检测到更改时,treeJSON变量将更新,我需要更新树。

我尝试了各种方法,如refresh()destroy()等,但在不重新加载页面的情况下,我无法在同一页面上构建新的树。这是一个片段,我已经包含了所有的函数,它很有效。重要的部分是使用treeJSON

input.onchange = function (e) {
  // do something
};
var treeJSON = someVar;
$("#tree").jstree({
  core: {
    check_callback: true,
    data: treeJSON,
  },
});

您只需告诉jstree一次在哪里加载根(core.data)。刷新时,树将根据此内容重新填充。

我会这样做:

var treeJSON = 'originaltree';
input.onchange = function (e) {
    // something
    treeJSON = $.parseJSON(newtree); // if newtree is json
    var tree = $('#tree').jstree(true);
    tree.refresh();
}
$('#tree').jstree({
    'core': {
        'check_callback': true,
        'data':  treeJSON
    }
});

或者,如果你想更具体地基于哪个节点:

$('#tree').jstree({
    'core': {
        'check_callback': true,
        'data': function (node, cb) {
            if (node.id === '#') { //Load root, will fire on first load as well as on refresh
                cb.call(this, treeJSON);
            }
        }
    }
});