【问题标题】:In jointjs, how can I restrict the number of connections to each input to just one?在jointjs中,如何将每个输入的连接数限制为一个?
【发布时间】:2015-05-13 19:37:26
【问题描述】:

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

我想我需要修改 validateConnection 函数,所以我想知道是否有一种方法可以检查磁体T 变量是否存在现有连接?类似的东西

if(magnetT.connected) return false;

也许通过在链接时将自定义属性传递给端口。

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

或类似的东西。显然以上是伪代码,所以如果有关于解决这个问题的不同方法的建议,我会全神贯注。提前感谢您的帮助!

【问题讨论】:

    标签: javascript jointjs


    【解决方案1】:

    您是对的,当您绘制链接以确定是否可以与目标建立连接时会调用 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;
    }
    

    【讨论】:

    • 嗨@IsalamAbdalla 它只适用于出站端口,你能举个例子吗,端口的传入链接也只接受一个链接。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    相关资源
    最近更新 更多