javascript - 在Sigma.js中加载JSON文件但无法绑定(bind)overEdge事件

标签 javascript json graph dom-events sigma.js

我想从 JSON 文件加载一些数据并在 Sigma.js 中绘制它们的图表,并将 overEdge 和 outEdge 事件与所有边绑定(bind)。我阅读了官方文档中的一些示例,并解决了当我想在代码中绑定(bind) overNode 事件时的问题,但使用绑定(bind) overEdge 事件的相同方法不起作用。这是我的代码:

<script>

sigma.parsers.json(
    '../data/data.json', 
    {
        container: 'graph-container',
        type: 'canvas',
        settings: {
            defaultNodeColor: '#ec5148',
            enableEdgeHovering: true,
            edgeHoverColor: 'edge',
            defaultEdgeHoverColor: '#000',
            edgeHoverSizeRatio: 1,
            edgeHoverExtremities: true,
        }
    },
    function(s) {         
        s.graph.nodes().forEach(function(n) {
            s.bind('overNode', 
                function(e) {
                    alert("node");
                }
            );  
        });

        s.graph.edges().forEach(function(n) {
            s.bind('overEdge', 
                function(e) {
                    alert('edge');                                          
                }
            );
        });
    }
);

</script>

当我运行我的代码时,似乎

enableEdgeHovering: true,

犯了一些错误,例如

Uncaught Error: The edge events feature is not compatible with the WebGL renderer

但是当我删除它时,我的边缘无法绑定(bind)事件。我看到官方示例做了同样的事情,他们的代码可以在我的浏览器上运行,但我的代码不能。

最佳答案

可能它实际上不适合你。这是我的项目的工作示例:

  <div id="container">
  <style>
    #graph-container {
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      position: absolute;
    }
  </style>
  <div id="graph-container"></div>
</div>
<script>
  s = new sigma({
    graph: 0,
    container: 'graph-container',
      renderer: {
        container: document.getElementById('graph-container'),
        type: 'canvas'
      },
      settings: {
            doubleClickEnabled: false,
            minEdgeSize: 0.5,
            maxEdgeSize: 4,
            enableEdgeHovering: true,
            edgeHoverColor: '#000',
            defaultEdgeHoverColor: 'red',
            edgeHoverSizeRatio: 1,
            edgeHoverExtremities: true,
            defaultEdgeLabelSize: 20,
            edgeLabelSize: 'proportional',
            minArrowSize: 10,
      }
  });
  sigma.parsers.json('data/arctic.json', s);
  s.bind('overNode outNode clickNode doubleClickNode rightClickNode', function(e) {
    console.log(e.type, e.data.node.label, e.data.captor);
  });
</script>

关于javascript - 在Sigma.js中加载JSON文件但无法绑定(bind)overEdge事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485386/

相关文章:

java - 使用 Jackson 对 JSON 文件进行多态反序列化

json - JSON 格式的 Amazon S3 响应?

c++ - 如何使用 Boost 的 vf2_subgraph_iso 检测 multimap 上的子图同构?

matlab - 在 MATLAB 中使用 for 循环绘制图形

javascript - socket.io - 用一个数据包监听多个命名空间?

javascript/Jquery 弹出窗口 - 一次仅打开一个弹出窗口

javascript - x 轴的 JSON 键,y 轴的值

java - 如何在java中绘制水平误差线?

javascript - React 测试库 waitForElementToBeRemoved 无法正常工作

javascript - Safari 和 Firefox 使用 Canvas 显示锯齿线