gpt4 book ai didi

fancytree - 自动加载fancytree中的子节点

转载 作者:行者123 更新时间:2023-12-03 08:07:55 25 4
gpt4 key购买 nike

我有一个 fancytree 实现,其中每个父节点都有一个可以选择的子节点。在用户选择了特定的 child 之后,她可以保存她的选择和设置,以便她以后可以回来使用。

除了我对以前保存的数据进行初始加载时,我能够完成所有这些操作。我需要做的是识别需要打开的节点(及其子节点),然后让 Fancytree 打开这些节点并选择子节点。

我正在使用延迟加载,当延迟加载事件触发时,我能够检查是否需要选择子项并根据需要进行选择。我想要做的是以编程方式做同样的事情,以便加载所有先前选择的子项并在加载时选择。目前,我正在以这种方式尝试:

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) 永远找不到节点,即使我能够在运行后在控制台中找到该节点。似乎父节点尚未加载,这可能会导致此问题,但我不确定在哪里可以设置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();
}
});
},

关于fancytree - 自动加载fancytree中的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com