0

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

在文档中有类似的东西:

text-events:如果标签收到事件,是否应在元素上发生事件;可能是或不是。您可能希望将样式应用于 :active 上的文本,以便您知道文本是可激活的。

似乎是这样,但没有示例如何在标签级别使用它..

编辑: 图表上的示例

我如何想象它可能在代码中:

  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??
  });
4

2 回答 2

0

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

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

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

于 2016-02-01T19:03:54.550 回答
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

于 2016-01-25T16:19:24.010 回答