防止在Cytoscape JS+EdgeHandles中创建边缘



防止从节点A结点B创建多条边的最佳方法是什么?

我目前正在使用一个map(纯JSON对象(来跟踪添加的边,如果从aB的边已经存在,我会删除它,但作为解决方案,它看起来不是很优雅。

我认为我在查看edgeType事件时找到了解决方案,因为它以源节点和目标节点为参数,返回null/undefined将阻止添加边。问题是,我实际上并没有得到一个目标节点,而是得到了另一种对象,这使得这个事件毫无用处。我不明白什么有用,实际上这似乎是个bug。

另一种对象可能是edgeHandle对象。它的数据中只有id属性。您可以通过添加一些条件来忽略它。但是,如果您将鼠标悬停在真实的目标节点上,则此edgeHandle元素将替换为您在其上进行鼠标悬停的元素(节点(。

getEdgeType = (srcNode, tgtNode) => { 
if (tgtNode.data() && tgtNode.data().isDiagramNode) 
// isDiagramNode is a property of the diagram node data object 
// you can add your logic and return either 'flat' or null 
}
return null; // null means cant make link between nodes 
}; 

最新更新