Javascript infovis工具包(JIT)在HyperTree中添加边缘事件侦听器



我很难在Javascript Infovis工具包库的HyperTree对象边缘添加一个边缘事件侦听器。我知道这样一个事实,一切都围绕着"contains"方法,而默认的边缘类型(即"hyperline")并没有实现该方法。

我做了什么:我添加了代码

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调试器中检查过,在jit源代码库中的lineedgeHelper对象上触发了contains方法。当我单击某条边时,所有contains调用只为一条边返回true,而为其余对象返回false

注释掉enableForEdgestype: 'Native'行可以防止jit edgeHelpercontains方法上的aby触发器。

但是,如果我在added onClick侦听器上设置了一个断点,那么每当我在节点外单击时(无论是在边缘还是在空白处单击),我都会得到node == false

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

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

jit.js中有一个错误。我提交了一个pull请求。

相关内容

  • 没有找到相关文章

最新更新