当前位置: 首页 > 知识库问答 >
问题:

JSPlumb在连接分离后重新创建连接

充栋
2023-03-14

我有div,可以拖放到绘图区域。可以使用鼠标从源endpoint拖放到目标endpoint手动连接这些div。在这样创建的连接上,连接被分离,但endpoint保留,删除的连接可以通过上述相同的手动过程重新创建。现在,我还将以json格式的连接节点流程图形式的绘图保存到磁盘文件中。在加载文件时,流程图会完美地显示所有连接和节点。现在我在点击一个节点时删除一个连接,它就可以工作了。但是现在我不能再次重建同样的连接。旧节点终结点已变得无响应。这是我的加载函数:-

函数loadDrawing(jsPlumb、clientName、文件名){

var compositeObject = [ clientName.toString() , fileName.toString() ];

$.ajax({
    type: "post",
    url: contextPath+"/file/load",
    beforeSend: function(xhr) {
        xhr.setRequestHeader( "Content-type", "application/json" );
    },
    // Send client and file name to the server
    data : JSON.stringify(compositeObject),
    async:false,
    cache: false,
    contentType: false,
    success: function(response){
        var nodes = response.nodes;
        var endpoints = response.endpoints;
        var connections1 = response.connections;

        $.each(nodes, function( index, elem ) { 
              createElement( jsPlumb, elem.cssClass , elem.blockId , elem.nodetype , 
                    elem.dropStatus , elem.positionX, elem.positionY , elem.html, connections1["anchors"] );
        });

        var connections = response.connections;

        $.each(connections, function( index, elem ) {



             var connection1 = jsPlumb.connect({
              source: elem.pageSourceId,
              target: elem.pageTargetId,
              reattach: true,
              anchors: elem.anchors,

              endpoint:"Rectangle",
              maxConnections:-1, // Unlimited Connections .
              deleteEndpointsOnDetach:false,// Do not delete endpoints on connection removal.
              paintStyle:{ width:10 , height:10, strokeStyle:'#666' },
              isSource:true,
              connector: 'Flowchart' ,
              connectorStyle : { strokeStyle:"#666" },
              isTarget:true 
           });

        });

        // Reset global node counters 
        countLLC = response.counters[0].countLLC;
        countCCorp = response.counters[0].countCCorp;
        countSCorp = response.counters[0].countSCorp;
        countNonProfit = response.counters[0].countNonProfit;
        countSeries = response.counters[0].countSeries;
        countLivingTrust = response.counters[0].countLivingTrust;
        countLandTrust = response.counters[0].countLandTrust;
        countQRP = response.counters[0].countQRP;
        countLP = response.counters[0].countLP;

        wealthPlanningItemId = response.counters[0].countWPBNode;

        // Display detached captions
        for ( i=0 ; i<response.labelId.length ; i++)    {

            var detachedCaptionDiv =  $('<div>').attr('id',response.labelId[i].labelId)
                                            .html(response.labelContent[i].content);

            $('#nodeCaptionContainer1').append(detachedCaptionDiv);
        }
        alert("Image Open Successful .");
    }, 
    error: function(){      
        alert("Image Open Failure");
        } 
});

}

// Re-create nodes 
function createElement( jsPlumb , cssClass , nodeId , nodetype , dropStatus     , posX, posY , content, anchor1 )   {

var recreatedNode =  $('<div>').attr('id',nodeId).html( content );

recreatedNode.attr('title', nodetype );
recreatedNode.attr('dropstatus', dropStatus );
recreatedNode.attr('class', cssClass );

recreatedNode.css('position', 'absolute');
recreatedNode.css('left', posX+'px');
recreatedNode.css('top', posY+'px');



// Make nodes and their endpoints non-detachable
$(recreatedNode).removeClass("ui-draggable"); 
jsPlumb.draggable($(recreatedNode)); 




$("#content1").append(recreatedNode);

}

这是我的连接删除代码:-

jsPlumb.bind('click', function (connection, e) {
     jsPlumb.detach(connection);
});

我搜索过SOF、JSplumb谷歌群组、JSplumb API文档,以及谷歌抛出的大部分相关链接,但找不到任何帮助。请帮忙。

共有1个答案

颜君浩
2023-03-14

嗨,朋友们,
经过一些研究,我终于发现了我的错误,其实这是我不知道的。我试图在两个节点之间绘制一个连接,这两个节点没有通过调用jsPlumb.addEndpoint()附加endpoint。如果不使用此函数连接endpoint,则无法将UUID设置为endpoint,因此无法从先前已连接的现有endpoint连接这些节点。因此,这个故事的寓意是,您需要将endpoint附加到特定位置的节点,然后将UUID设置到它们,然后使用UUID连接节点,否则它将不起作用。有关jsplump.addEndpoint()和jsplump.connect({uuids:[ep_1.getUuid(),ep_2.getUuid()])函数的更多信息,请参阅API文档。这些是我认为最重要的一次。希望这能帮助所有面临同样问题的人。

 类似资料:
  • 我是jsPlumb的新手,我遇到了一个源和目标相同的连接问题。我必须禁止这些类型的连接,我认为最好的方法是:当我完成创建连接时,如果它具有相同的sourceId和targetId,则删除连接。我正在这样做: 连接被删除,但看起来源endpoint仍然存在,但是,如果我拖动该项目,点会停留在相同的地方,就好像它不再引用该项目一样,这是可以的,因为连接被删除了,但它不是好吧,因为那个点不应该在那里。

  • 我正在尝试使用ApacheDBCP2使用连接池。 我的最大总连接是5。我关闭每一个连接后,它被使用。 但在连接池中关闭5次连接后,我仍然获得连接。 关闭5个连接后,何时ping数据库以获取连接?或者,它将从连接池本身获取数据,而不访问数据库。 下面是我的示例代码片段。请纠正我对连池的理解。

  • 我想知道是否有任何方法可以在GitHub中重新附加一个“分离”的存储库? 事件顺序: 从我所属的组织中派生出一个私有存储库 父级、私有存储库已公开 我还公开了我的分叉存储库(或收取账单) 现在,当我希望提交pull请求并合并一些更改时,我注意到我的fork与父存储库“分离”(请参阅此解释和确认,了解原因) 有没有希望“重新连接”这把叉子?或者我应该重命名我的存储库,再次分叉,然后复制代码? 欢迎提

  • 我试图在JSPlumb中创建两个endpoint之间的直线连接。当我尝试连接到endpoint时,将拖动源点,而不是创建直线连接。 这里是小提琴:http://jsfiddle.net/dutchman71/aMksZ/2/ 谢谢你的帮助。

  • 问题内容: 我想一个简单的聊天应用程序在这里与socket.io和node.js中 每次重新启动node.js服务器时,socket.io都会自动重新连接,并以某种方式创建与服务器的另一个连接,即客户端现在两次收到相同的聊天消息。我该如何解决? 问题答案: 默认情况下,在disconnect socket.io上重新连接丢失的连接,从而重新运行事件。因此,每次重新连接时,您都会添加一个事件监听器来

  • 我想画一个流程图。我动态创建div,并为每个div设置了唯一的“id”属性,并使用Jsplumb连接器连接它们。 我从数据库中获取源和目标id(请注意,动态创建的div的“id”属性是其从数据库中的id),并存储在“connectors”json中。其格式如下: {[from:A,to:B],[from:A,to:C],[from:B,to:C]} jsplumb代码如下 问题: 我现在拥有的是