是否可以在Cytoscape.js中的节点内建立超链接?

时间:2016-01-25 15:33:50

标签: javascript cytoscape.js cytoscape

我希望用户能够点击节点内的某些文本并执行一些操作,例如显示某个对话框或打开其他窗口。这可能吗?

在文档中有类似的内容:

  

text-events :如果标签收到事件,是否应在元素上发生事件;可能是或否。您可能需要在文本上应用样式:活动,因此您知道文本是可激活的。

它看起来很像,但没有例子如何在标签级别上使用它。

编辑:示例 on the diagram

我怎么想象它可能在代码中:

  label_element.on('tap', function(event){
     // cyTarget holds a reference to the label
     var evtTarget = event.cyTarget;
     //...
  });

  cy.on('tap', function(event){
     var evtTarget = event.cyTarget;
     //evtTarget holds element but I can somehow get the text which got tap event??
  });

2 个答案:

答案 0 :(得分:0)

根据Cytoscape.js文档,您可以尝试使用

执行此操作
  

cy.on( '抽头')

,像这样: 实例

绑定到与指定节点选择器匹配的元素冒泡的事件:

    cy.on('tap', 'node', { foo: 'bar' }, function(evt){
      console.log( evt.data.foo ); // 'bar'

      var node = evt.cyTarget;
      console.log( 'tapped ' + node.id() );
    });

绑定核心收到的所有点击事件:

    cy.on('tap', function(event){
      // cyTarget holds a reference to the originator
      // of the event (core or element)
      var evtTarget = event.cyTarget;

      if( evtTarget === cy ){
          console.log('tap on background');
      } else {
        console.log('tap on some element');
      }
    });

http://js.cytoscape.org/#cy.on

答案 1 :(得分:0)

如果text-events: yes,点击节点的标签将在节点上触发tap

如果您希望在可以独立交互的节点之上拥有任意UI,那么您应该在DOM中创建一个单独的层。

基本原理:Cytoscape.js中的标签相对简单,因为支持复杂的标签与DOM的复杂程度相同。在这种情况下,最好将DOM用作图形顶部的图层,而不是在Cytoscape.js中重新实现它。