在fancytree中自动加载节点children

Automatically load node children in fancytree

我有一个 fancytree 实现,其中每个 parent 节点都有一个可以 select 编辑的 child 节点。在用户 select 特定 children 之后,她可以保存她的 select 离子和设置,以便她以后可以回来使用。

除了我对以前保存的数据进行初始加载时,我可以完成所有这些操作。我需要做的是识别需要打开的节点(及其 children selected),并让 Fancytree 打开这些节点和 select children .

我正在使用延迟加载,当延迟加载事件触发时,我可以检查 child 是否需要 selected 并根据需要执行此操作。我希望能够做的是以编程方式做同样的事情,以便加载所有以前 selected children 并在加载时 selected。目前,我正在尝试这样做:

function getMultipleFieldsNoReset(element,selectedFieldsArray) {
    var fieldCreator = element.value;
    var tree = $("#multipleFields").fancytree("getTree");

    var treeOptions = {
        url: "urltogetdata",
        type: "POST",
        data: {
            id: fieldCreator
        },
        dataType: "json"
    };
    tree.reload(treeOptions);


    for (var i = 0, len = selectedFieldsArray.length; i < len; i++) {
        var valueAry = selectedFieldsArray[i].split("-");
        var growerNode = valueAry[0];
        var farmNode = valueAry[1];
        var fieldNode = valueAry[2];

        var node = tree.getNodeByKey(growerNode);

        console.log(node);
    }
}

我的问题是 tree.getNodeByKey(growerNode) 从未找到该节点,即使我能够在运行后在控制台中找到该节点。似乎 parent 节点尚未加载,这可能会导致此问题,但我不确定在哪里可以设置 complete函数。我在哪里可以做到这一点?或者更好的是,有没有更简洁的方法来处理这个问题?

OP / Fletchius 已经找到了这个问题的解决方案,下面是它的答案。我以不同的方式实现了它,但事件 loadChildren 是相同的。我们都从中找到了解决方案。只是我正在加载那些被选中的节点和 lazy true 意味着在这个节点之后有子节点。并且只有 lazy=truethis.load(); 显式事件有用。

loadChildren:function(event, data){
    var node = data.node;
    $(node.children).each(function(){
        if(this.selected && this.lazy)
        {
            this.load();
        }
    });
},