【问题标题】:Automatically load node children in fancytree在 fancytree 中自动加载节点子节点
【发布时间】:2018-01-09 21:44:18
【问题描述】:

我有一个花式树实现,其中每个父节点都有一个可以选择的子节点。在用户选择特定的孩子之后,她可以保存她的选择和设置,以便她以后可以返回。

我能够完成所有这些操作,除非我对以前保存的数据进行初始加载。我需要做的是确定需要打开的节点(以及选择的子节点),并让 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 函数。我在哪里可以做到这一点?或者更好的是,有没有更清洁的方法来处理这个问题?

【问题讨论】:

  • 你是怎么做到的?我有同样的问题。实际上,我可以显示以前保存的记录,但是当我尝试添加更多树值而不之前打开时,我的问题是丢失了以前保存的数据。因为我正在删除以前的记录并创建新记录,所以我在后端使用 Django(这真的没关系)
  • 我能够通过使用 LoadChildren 事件来实现这一点。每当发生负载时都会触发。我跟踪以前在后端选择的项目。每当有人重新加载页面时,加载时我会提供上次选中的所有项目。然后,当打开一个节点时,我会检查我的列表以查看它们的复选标记状态。这给人一种错觉,即项目加载时已选中。
  • Awesome Fletchius,非常感谢,我上周一直在苦苦挣扎,现在我只能因为你的回答而解决这个问题,请也发布你的答案并接受,我正在添加我的答案这可能对未来的人有帮助。

标签: fancytree


【解决方案1】:

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();
        }
    });
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多