我希望用户能够点击节点内的某些文本并执行一些操作,例如显示某个对话框或打开其他窗口。这可能吗?
在文档中有类似的内容:
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??
});
答案 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');
}
});
答案 1 :(得分:0)
如果text-events: yes
,点击节点的标签将在节点上触发tap
。
如果您希望在可以独立交互的节点之上拥有任意UI,那么您应该在DOM中创建一个单独的层。
基本原理:Cytoscape.js中的标签相对简单,因为支持复杂的标签与DOM的复杂程度相同。在这种情况下,最好将DOM用作图形顶部的图层,而不是在Cytoscape.js中重新实现它。