dal*_*der 3 javascript jointjs
我正在使用jointjs,正如问题所述,我需要将每个输入的允许连接数限制为最多一个。如果输入已被输出连接到,则在现有连接被更改或删除之前,不应允许任何额外的连接尝试。
我想我需要修改 validateConnection 函数,所以我想知道是否有办法检查现有连接的 MagnetT 变量?就像是
if(magnetT.connected) return false;
Run Code Online (Sandbox Code Playgroud)
也许通过在链接时将自定义属性传递给端口。
on.link(){
target.connected = true;
}
Run Code Online (Sandbox Code Playgroud)
或那种性质的东西。显然,上面是伪代码,所以如果有关于解决这个问题的不同方法的建议,我全神贯注。在此先感谢您的帮助!
当您绘制链接以确定是否可以与目标建立连接时,调用 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |