Javascript 在jointjs中,如何将每个输入的连接数限制为一个?

Javascript 在jointjs中,如何将每个输入的连接数限制为一个?,javascript,jointjs,Javascript,Jointjs,我使用的是jointjs,正如问题所述,我需要将每个输入允许的连接数限制为最多一个。如果输入已被输出连接到,则在更改或删除现有连接之前,不应允许任何其他连接尝试 我想我需要修改validateConnection函数,所以我想知道是否有办法检查magnetT变量是否存在连接?差不多 if(magnetT.connected) return false; 可能是通过在链接时将自定义属性传递给端口 on.link(){ target.connected = true; } 或者类似的东西。显然,

我使用的是jointjs,正如问题所述,我需要将每个输入允许的连接数限制为最多一个。如果输入已被输出连接到,则在更改或删除现有连接之前,不应允许任何其他连接尝试

我想我需要修改validateConnection函数,所以我想知道是否有办法检查magnetT变量是否存在连接?差不多

if(magnetT.connected) return false;
可能是通过在链接时将自定义属性传递给端口

on.link(){
target.connected = true;
}

或者类似的东西。显然,上面的代码是伪代码,所以如果有关于解决这个问题的不同方法的建议,我洗耳恭听。提前感谢您的帮助

在绘制链接以确定是否可以连接到目标时调用validateConnection函数是正确的。在这个函数中,你可以做任何你想做的事情。 另一个有用的功能是validateMagnet,它确定用户单击磁铁时是否可以绘制导线

我认为jointJS没有API来获取连接到元素或端口的链接。你能做的就是把所有链接都写在纸上,检查任何链接的源或目标是否与magnetT连接。如果其中一个已连接,则返回false

代码如下:

validateMagnet: function(cellView, magnet){
    var links = graph.getLinks();
    for (var i = 0; i < links.length; i++){
        if( (( cellView.model.id  == links[i].get('source').id ) && ( magnet.getAttribute('port') == links[i].get('source').port) )||
        (( cellView.model.id  == links[i].get('target').id ) && ( magnet.getAttribute('port') == links[i].get('target').port) ))
        return false;
    }
    return true;
},
validateConnection: function(cellViewS, magnetS, cellViewT, magnetT, end, linkView){
    var links = graph.getLinks();
    for (var i = 0; i < links.length; i++)
    {  
        if(linkView == links[i].findView(paper)) //Skip the wire the user is drawing
        continue;

        if ( (( cellViewT.model.id  == links[i].get('source').id ) && ( magnetT.getAttribute('port') == links[i].get('source').port)) ||
        (( cellViewT.model.id  == links[i].get('target').id ) && ( magnetT.getAttribute('port') == links[i].get('target').port)) ){
            return false;
        }
    } 
    return true;
}
validateMagnet:功能(cellView,磁铁){
var links=graph.getLinks();
对于(变量i=0;i
Hi@IsalamAbdalla它只适用于出站端口,您能举个例子吗?fiddle,端口的传入链接也只接受一个链接。提前谢谢!