【问题标题】:Javascript infovis toolkit (JIT) adding edge event listener in HyperTreeJavascript infovis 工具包 (JIT) 在 HyperTree 中添加边缘事件侦听器
【发布时间】:2014-11-21 19:55:12
【问题描述】:

我正在努力向 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 调试器,contains 方法是在 jit 源库中的 line edgeHelper 对象上触发的。当我点击某个边缘时,所有contains 调用仅针对一个边缘返回true,而为其余对象返回false

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

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

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

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

【问题讨论】:

    标签: javascript graph infovis thejit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2019-07-05
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2010-11-26
      相关资源
      最近更新 更多