ユーザーがツリー内のさまざまなノードを開いてコンテンツを表示できるようにする jstree の json_data 実装があります。基本的にこれ:
.jstree({
"plugins" : [ "json_data", "ui" ],
"ui" : { "select_multiple_modifier": "on",
"selected_parent_close": "deselect" },
"json_data" : {
"ajax" : {
"url": function(node) {
... return a url ...
},
"success": function(metadata, textStatus, jqXHR) {
var parent = this._get_node(); // <- RACE CONDITION
return parseMetaDataNodes(metadata, parent);
}
}
}
最初の AJAX 応答が返される前にユーザーが何らかの方法で 2 つのノードをクリックすると、両方のノードがツリー内で同じ「親」を持っていると見なされ、動作が壊れます。
誰も知っていますか:
- 成功のコールバックで正しいノードを取得するより良い方法は?
- ツリーをロックして、最初のクリックが戻るまでクリックを受け付けないようにする方法はありますか? (あまり望ましくありませんが、機能する場合もあります。)