0

我正在努力将边缘事件侦听器添加到 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");
                }
            }
         }

下面这个问题。我确实检查了 Google Chrome 调试器,该contains方法是line edgeHelper在 jit 源库中的对象上触发的。当我单击某个边缘时,所有contains调用true仅返回一个边缘,而返回false其余对象。

注释掉行enableForEdges并防止 jit行方法type: 'Native'上的 aby 触发器。edgeHelpercontains

但是,如果我在添加的 onClick 侦听器上放置一个断点,则node == false无论何时单击节点外部(无论是单击边缘还是空白空间)都会得到。

所以一般的问题是:如何正确地将事件侦听器添加到 HyperTree 中的边缘?

还有更狭隘的问题:我怎么能确定,当contains某些行返回 true 时,它​​实际上会触发一个 onClick 侦听器,同时在那里传递一条边,而不是一个false.

4

1 回答 1

0

jit.js 中有一个错误。我已经提交了一个pull-request

于 2014-09-26T18:53:45.300 回答