次の点についてお役に立てれば幸いです。
URL経由でJSONデータをロードしたjsTreeがあります。すべてのデータがプリロードされます。
私がする必要があるのは、検索機能を変更して、ユーザー入力に基づいて AJAX を介してツリー全体を新しい JSON データでリロードすることです (バックエンドでより複雑なノード検索を行う必要があるため)。
まず最初に、jsTree コードで URL を呼び出すようにします。最初にツリーをロードしたときと同じ URL から始めました。
ただし、これは私が解決策を見つけることができない問題です-最初にツリーをロードするためにURLが正常に呼び出されますが、検索テキストを入力して[検索]をクリックすると、jsTreeは通常の内部検索を使用してノードを強調表示しますが、私が提供する URL は二度と呼び出されません。
HTMLは
<div>
<form>
<div>
<input id="treeSearchText" type="text" />
<button id="searchTree" class="btn">Search</button>
<button id="clearSearch" class="btn">Clear</button>
</div>
</form>
</div>
<div id="myJsTree" style="height: 100%;"></div>
私が使用しているjsTreeの初期化は次のとおりです。
var url = <my_url>;
$("#myJsTree").jstree({
"json_data" : {
async : true,
"ajax" : {
"url" : url
}
},
"search": {
"case_insensitive" : true,
"ajax" : {
"url" : url
}
},
'ui' : {
'select_limit' : 1,
'initially_selected' : [${myId}],
},
"plugins" : [ "json_data", "search", "sort", "ui", "themeroller" ],
});
検索コードのスニペット:
$("#searchTree").click(function() {
$("#myJsTree").jstree("search", $("#treeSearchText").val());
return false;
});
助けていただければ幸いです。
ありがとう。