jstree로 만든 트리가 부분적으로로드되고 노드를 확장 할 때 json_data 플러그인을 통해로드됩니다. 여기에 코드의 핵심입니다 :ajax로드로 jstree에서 노드를 프로그램 적으로 확장
$("#TreeViewDiv")
.jstree(
{
json_data:
{
ajax:
{
url: "/Website/GetNodes",
data: function (node) {
//do some stuff to compile data for backend here
return {
//insert data for backend here
};
},
error: function() {
$("#TreeViewDiv").html("Error initializing tree");
}
}
},
plugins: ["json_data", "ui"]
});
내가 다음 사용자가 사이트에 액세스에 따라, 잎 노드를 일부 노드를 확장하고 선택합니다.
var nodeValues = [Parent, firstChild, leaf];
for (var j = 0; j < nodeValues .length-1; j++) {
$("#TreeViewDiv").jstree("open_node", $("input[value='" + nodeValues [j] + "']"));
}
는 부모 노드가 잘 작동 열고 트리가 표시 될 때 firstChild가 노출되지만 firstChild 노드가 열려 있지 다음과 같이 나는 루프에서이 작업을 수행. 루프를 다시 시작하면 firstchild가 성공적으로 열려 리프 노드를 표시합니다.
내 생각 엔 위의 루프가 열려고 시도 할 때 요청이 완료되지 않았고 firstChild 트리 노드가 존재하지 않는다고 생각합니다. 다음 노드를 열기 전에 노드가로드되기를 기다리는 방법이 있습니까? 고맙습니다!