【发布时间】: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