使用新的基本节点id重新加载jstree窗口

时间:2014-04-11 09:36:51

标签: javascript jquery jstree

我有2个JSTree窗口,第一个显示目录树,第二个显示所选目录中的文件(不是目录)。

var dirTree = $('#folders').jstree({
'core' : {
    'data' : {
        'url' : '/myUrl?action=tree',
        'data' : function (node) {
            return { 'id' : node.id };
        }
    }
}});

var fileTree = $('#files').jstree({
'core' : {
    'data' : {
        'url' : '/myUrl?action=files',
        'data' : function (node) {
            return { 'id' : node.id };
        }
    }
}});

// listen for event
$('#folders').on('select_node.jstree', function (e, data) {
           fileTree.jstree("refresh");
}).jstree();

以上是我的代码的当前状态,但我很欣赏select中的jstree调用需要以某种方式进行更改。

单击目录时,我希望使用所选目录节点的内容完全刷新我的文件列表。我相信我想问一下刷新文件窗口时如何设置基本节点,但如果你认为你知道更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果有人有任何其他想法,欢迎您发布替代答案。

我目前的解决方案是设置一个baseId,用作文件窗口的id,然后刷新....

var baseId = '#';
var dirTree = $('#folders');
var fileTree = $('#files');

dirTree.jstree({
'core' : {
    'data' : {
        'url' : '/myUrl?action=tree',
        'data' : function (node) {
            return { 'id' : node.id };
        }
    }
}});

fileTree.jstree({
'core' : {
    'data' : {
        'url' : '/myUrl?action=files',
        'data' : function (node) {
            return { 'id' : baseId };
        }
    }
}});

// listen for event - could chain this with instantiation??
dirTree.on('select_node.jstree', function (e, data) {
        baseId = data.selected[0];
        fileTree.jstree("refresh"); 
}).jstree();