首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过延迟加载扩展fancyTree

通过延迟加载扩展fancyTree
EN

Stack Overflow用户
提问于 2018-01-11 18:29:58
回答 1查看 1.6K关注 0票数 1

我已经设置了我的幻想树打开通过惰性加载,它运行得很好。

代码语言:javascript
复制
$("#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“,并保存到那个点的键序列。

以下内容将使不适用于

代码语言:javascript
复制
$("#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();

显然,它不能工作的原因是需要在一次声明和下一次声明之间有一些延迟。

然而,下面的代码在我的脑海中是混乱的:

代码语言:javascript
复制
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);
  }
});

有什么更整洁的方式打开到树上的一个特定点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 14:59:45

下面的代码似乎能做到这一点。

它是从

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

代码语言:javascript
复制
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() {});
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48213698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档