ノードを展開すると、部分的に読み込まれ、json_dataプラグインを介して読み込まれる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ツリーノードが存在していません。次のノードを開こうとする前に、ノードがロードされるのを待つ方法はありますか?ありがとうございました!