JointJS:如何将每个端口的链接限制为一个?

JointJS:如何将每个端口的链接限制为一个?,jointjs,Jointjs,JointJS库的API文档如下: 我正在为带有端口的元素使用DEVS插件 我需要限制从一个端口到一个端口的连接数 一旦从端口建立了链接,用户就不能从同一端口启动连接,除非删除现有连接 在库本身没有代码更改的情况下,是否有可能 即使在查看了API文档和代码本身之后,我也无法获得一个钩子/入口点来实现这个需求。 感谢您的帮助或指点 附言: 不幸的是,我现在的脊梁骨不好 我想这是将magnet=“passive”设置到相关端口的问题。只是不知道怎么做。(图形是动态的,不是元素之间预定义的链接) 只

JointJS库的API文档如下: 我正在为带有端口的元素使用DEVS插件

我需要限制从一个端口到一个端口的连接数

一旦从端口建立了链接,用户就不能从同一端口启动连接,除非删除现有连接

在库本身没有代码更改的情况下,是否有可能

即使在查看了API文档和代码本身之后,我也无法获得一个钩子/入口点来实现这个需求。 感谢您的帮助或指点

附言:

  • 不幸的是,我现在的脊梁骨不好
  • 我想这是将magnet=“passive”设置到相关端口的问题。只是不知道怎么做。(图形是动态的,不是元素之间预定义的链接)

只需从图形中获取元素并在其上设置特定属性即可

var source = graph.getCell(sourceId);
source.attr('.outPorts circle/magnet', 'passive')

我一整天都在为这件事挣扎。对我来说,将磁铁设为无源并不是一个足够好的解决方案。在挖掘源代码之后,我最终得到的结果是使用paper对象的validateMagnet函数。我从磁铁获取端口,然后从源模型获取所有出站链接。如果任何链接使用相同的点,我拒绝验证。代码如下:

validateMagnet:功能(cellView,磁铁){
//阻止来自已具有链接的端口的链接
var port=magnet.getAttribute('port');
var links=graph.getConnectedLinks(cellView.model,{outbound:true});
var portLinks=551;.filter(链接,函数(o)){
返回o.get('source')。端口==端口;
});
如果(portLinks.length>0)返回false;
//请注意,这是默认行为。仅在此处显示以供参考。
//禁用标记为被动的磁铁的链接交互(请参见下面的“.inPorts circle”)。
返回magnet.getAttribute('magnet')!='passive';
},

Hi@DanielWood,这段代码帮助很大。请允许我知道入境限制也是一个。提前谢谢!