我有一个 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 响应之前以某种方式单击了两个节点,它将认为它们在树中都有相同的“父节点”,从而破坏了行为。
有谁知道:
- 在成功回调中获取正确节点的更好方法?
- 一种锁定树的方法,使其在第一个返回之前不接受点击?(不太理想,但也可能有效。)