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