gpt4 book ai didi

javascript - 通过延迟加载扩展 fancyTree

转载 作者:行者123 更新时间:2023-11-28 03:48:48 25 4
gpt4 key购买 nike

我已经将 fancytree 设置为通过延迟加载打开,并且效果非常好。

$("#tree").fancytree({
selectMode: 1, quicksearch:true, minExpandLevel:2,
autoScroll: true,
source: [{
title: "Root",
key: "1",
lazy: true,
folder: true
}],
lazyLoad: function(event, data) {
var node = data.node;
data.result = {
url: "getTreeData.jsp?parent=" + node.key,
data: {
mode: "children",
parent: node.key
},
cache: false
};
}


});

但是,如果用户之前选择了树上的一个点,我希望树打开到该点。我有一个名为“层次结构”的变量,它看起来像“1/5/10/11/200”,并保存到该特定点的键序列。

以下内容将不起作用:

$("#tree").fancytree("getTree").getNodeByKey("1").setExpanded();
$("#tree").fancytree("getTree").getNodeByKey("5").setExpanded();
$("#tree").fancytree("getTree").getNodeByKey("10").setExpanded();
$("#tree").fancytree("getTree").getNodeByKey("11").setExpanded();
$("#tree").fancytree("getTree").getNodeByKey("200").setExpanded();

显然,它不起作用的原因是因为一个语句与下一个语句之间需要有一些延迟。

下面的代码可以工作,但在我看来很困惑:

function openNode(item) {

$("#tree").fancytree("getTree").getNodeByKey(String(item)).setExpanded();
}

function expandTree(hierarchy) {
var i=0;
hierarchy.split("/").forEach(function (item) {
if (item!="") {
i++;
window.setTimeout(openNode, i*100,item);
}
});

是否有更简洁的方式打开树上的特定点?

最佳答案

下面的代码似乎可以解决问题。

改编自

http://wwwendt.de/tech/fancytree/doc/jsdoc/Fancytree.html#loadKeyPath

function expandTree(hierarchy) {
$('#tree').fancytree("getTree").loadKeyPath(hierarchy).progress(function(data) {
if (data.status === "loaded") {
console.log("loaded intermediate node " + data.node);
$('#tree').fancytree("getTree").activateKey(data.node.key);
} else if (data.status === "ok") {}
}).done(function() {});
}

关于javascript - 通过延迟加载扩展 fancyTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48213698/

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