我正在努力为Javascript Infovis工具包库中的HyperTree对象边缘添加边缘事件监听器。我知道这一事实,一切都围绕着“包含”方法,这种方法没有针对默认边缘类型实现,即“超线”。
我做了什么: 我添加了代码
Edge: {
overridable: true,
type: 'line',
lineWidth: 4,
color: '#bbb'
}
到HyperTree构造函数。 我已添加类似
的内容Events: {
enable: true,
enableForEdges: true,
type: 'Native',
onClick: function (node, eventInfo, e)
if (!node) return;
alert(node);
if (node.nodeFrom) {
alert("target is a node");
} else {
alert("target is an edge");
}
}
}
关注this question。
我确实在Google Chrome调试器中检查了jit源库中contains
line
个对象上的edgeHelper
方法。当我点击某些边缘时,所有contains
次调用仅返回true
一条边,而其余对象返回false
。
注释掉enableForEdges
行和type: 'Native'
行会阻止jit edgeHelper
行contains
方法的aby触发器。
但是如果我在onClick监听器上添加断点,每当我点击节点外(无论是否点击边缘或空白空间)时,我都会得到node == false
。
所以问题一般:如何在HyperTree中正确地将事件监听器添加到边缘?
更狭隘的问题:我怎么能确定,当某个行的contains
返回true时,它实际上触发了一个onClick侦听器,同时在那里传递一个边,而不是false
。 / p>