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

jsPlumb以编程方式连接源和目标

姜淇
2023-03-14

我正在用jsPlumb构建一个UI,因为我有多个可以连接在一起的盒子。每个框有1个目标和3个源,使用对同一个框DOM元素调用的makeTargetmakeSource方法生成。

jsPlumb.makeTarget($('#box_id'), targetData);
jsPlumb.makeSource($('#box_id'), sourceData1);
jsPlumb.makeSource($('#box_id'), sourceData2);
jsPlumb.makeSource($('#box_id'), sourceData3);

每个源通过将其连接到方框不同部分的过滤器属性进行区分:

sourceData1.filter = '.filter_1';
sourceData2.filter = '.filter_2';
sourceData3.filter = '.filter_3';

只能在一个盒子的源和另一个盒子的目标之间进行连接。目标锚点是连续的。

这种安排非常适合我需要的东西,只要处理盒子和拖放连接。

当我想从JSON对象重新创建保存的UI时,问题就出现了。我可以毫无问题地重新创建框的位置,但我找不到一种方法来重新创建连接,以从框上可用的3个正确源开始。

我试图使用保存的uuid重新连接,但结果是在创建连接之前endpoint还不存在。我尝试的另一种方法是只连接源和目标框id:

jsPlumb.connect({ 
    source:"box_id1", 
    target:"box_id2",
});

但这永远不会将正确的源连接到目标,并且连接与用户创建的连接并不完全相同。如果连接是从源1启动的,那么使用此方法可以从源3启动。

基本上,我在问,在使用jsPlumb API创建endpoint之前,是否可以通过编程方式连接源和目标?

那么,在这种情况下是否有可能重新创建连接,或者我应该寻找其他解决方案?

谢谢

注意:您可以在此处找到有关UI、其设置和问题的更多信息:https://github.com/sporritt/jsPlumb/issues/77

共有1个答案

司寇正志
2023-03-14

尝试将UUID分配给endpoint。

    jsPlumb.addEndpoint('#box_id', { uuid: $('#box_id_source1' }, {isSource: true,isTarget: false});
    jsPlumb.addEndpoint('#box_id', { uuid: $('#box_id_source2' }, {isSource: true,isTarget: false});
    jsPlumb.addEndpoint('#box_id', { uuid: $('#box_id_source3' }, {isSource: true,isTarget: false});
    jsPlumb.addEndpoint('#box_id', { uuid: $('#box_id_target1' }, {isSource: false,isTarget: true});

现在您已经为endpoint分配了UUID。从JSON下载laoding后,将很容易在它们之间建立连接:

jsPlumb.connect({uuids: ['#box_id_source1', '#box_id_target1']});

希望这能帮到你或者给你个主意

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

  • 我的要求是,我使用jsplumb.addEndPoint为两个名为“container0”和“container1”的容器添加两个endpoint。 现在我需要通过编程方式使用连接器链接两个endpoint,但是jsplump.connect创建了一个新endpoint并进行连接,而不是使用我使用jsplump.addEndpoint创建的endpoint。 我如何连接这两个endpoint?此外

  • 我实际上是在编程一些东西,不让用户访问Android原生wifi连接页面,所以我在我的Android应用程序中编程。它扫描可用的无线网络,将其显示在列表视图中,然后单击要连接的网络。 事实上,除了我的连接功能之外,一切都很好,这使得我的应用程序崩溃,所以如果你有任何想法...下面是代码(这是用户输入网络通行证后调用的函数)和堆栈跟踪: 堆栈跟踪:

  • 以同样的方式,我想为OTG做这件事。

  • 问题内容: 如何在jdbc中检查oracle数据库的打开连接? 注意:不能用于此目的。 问题答案: 通常,连接池还将使用Connection.isClosed()方法来检查连接是否仍然有效。问题在于,并非所有的JDBC驱动程序都会正确处理此调用。因此,我假设有一些简单的检查语句,就像RealHowTo所说的那样。对于Oracle,他已经提到了“ SELECT 1 FROM Dual”,它对于Ora

  • 问题内容: 我有以下目录布局: src main Java resources SQL (database script) Spring (configuration) network application 在ServletContextListener类中,我想访问SQL目录下的文件并列出它们。基本上我的问题是路径,因为我知道简而言之列出目录下的文件是: 也许我可以使用Object尝试建立路径