【发布时间】:2018-09-21 18:05:58
【问题描述】:
我偶然发现了 Javascript InfoVis Toolkit 的 Spacetree 可视化存在以下问题:当我用鼠标右键单击一个节点时,随后的操作在同一子树中的不同节点上运行,而不是实际单击的节点。
以下是相关的代码部分:
st = new $jit.ST({
Events: {
enable: true,
onRightClick: function(node, eventInfo, e) {
console.log(eventInfo); // line 87
console.log(e); // line 88
if (node != undefined) {
console.log(node.id); // line 90
if (removedNodes.indexOf(node.data.uniqueId)>-1) {
console.log(node.id, " has been restored");
removedNodes.splice(removedNodes.indexOf(node.data.uniqueId),1);
} else {
console.log(node.id, " has been deleted"); // line 95
removedNodes.push(node.data.uniqueId);
}
localStorage.setItem("removedNodes", JSON.stringify(removedNodes));
loadNewTree(currentTreeId, true, 0)
}
},
},
/* further code */
}
如您所见,我将目标节点的事件信息和节点ID放到控制台输出(上面代码sn-p中标记的相关行号)。这是针对错误节点的情况的控制台输出:
我被困在这个问题上,看不出哪里出了问题。如果单击同一子树中的节点,则该问题大约在十次单击中发生一次,经常(但不总是!)目标节点是之前单击一次的节点。
感谢您的任何意见!
【问题讨论】:
标签: infovis