6

我们正在开发一个项目,该项目使用 JSPlumb 进行工作流渲染并维护一个包含节点(id、位置、文本等)和连接的单独数据模型,并使用 jsPlumb.bind 与事件保持同步

当我重新创建我的连接时,我使用源和目标参数调用 jsPlumb.connect,但似乎 ID 是在幕后创建的,因此与从数据模型加载的内容不匹配。这会很好,除非在分离时我不想通过 ID 从模型中删除该连接......

有没有办法手动设置连接器的 ID?

谢谢

4

5 回答 5

3

您可以直接从连接中设置 id:

var conn=jsPlumb.getConnections({
  scope:'myScope", 
  source:"mySourceElement", 
  target:"myTargetElement"
});

conn.id=elem.connectionId;
于 2015-07-07T14:42:43.297 回答
1

API 文档中,我找不到用于获取具有属性 ID 的连接的函数,即使您可以使用setParameter( API DOC ) 将 ID 设置为连接。相反,您可以删除带有 sourceId 和 targetId 而不是连接 ID 的连接。

var conn=jsPlumb.getConnections({
  scope:'myScope", 
  source:"mySourceElement", 
  target:"myTargetElement"
});
jsPlumb.detach(conn,param)  //by default param is false which defines whether to fire event on connection detach
于 2013-11-28T09:17:30.193 回答
1

我有一个程序可以保存然后恢复整个流程图。以下是我如何以编程方式设置连接器的 ID。

var connections = flowChart.connections;
$.each(connections, function( index, elem ) {
    var connection1 = jsPlumb.connect({
        source: elem.pageSourceId,
        target: elem.pageTargetId,
        label: elem.connectionLabel,
        id: elem.connectionId,
        connector: "Flowchart",
        anchors: ["BottomCenter", [0.75, 0, 0, -1]],
        overlays:[ 
            "PlainArrow", 
            [ "Label", { location:1,
            id:"arrow",
            length:12,
            foldback:1,
            width:12,
            cssClass:"aLabel"
            }]
        ],
        connectorOverlays:[ 
            [ "Arrow", { width:10, length:30, location:1 } ],
            [ "Label", { label:"foo" } ]
        ],
    });
于 2015-04-28T20:13:55.317 回答
0
var c = instance.connect({
     source: sourceNodeId,
     target: targetNodeId                   
});
$(c).attr('id', connection_id);

在两个节点之间创建连接时,可以将其存储在变量中。之后,可以使用 jQuery 轻松添加 ID。

于 2015-04-27T08:46:39.177 回答
0
var connection = jsPlumb.connect({
     source: source,
     target: target
});
$(connection.canvas).attr('id', id);

请注意connection.canvas这与@chabeee 答案不同。

于 2020-09-10T08:56:17.360 回答