JSPlumb - 设置连接ID

时间:2013-09-12 15:59:48

标签: jsplumb

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

当我重新创建我的连接时,我正在使用源和目标参数调用jsPlumb.connect,但似乎ID是在幕后创建的,因此与从数据模型加载的ID不匹配。这样就可以了,除了在去除时我不想通过模型中的ID删除该连接...

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

由于

5 个答案:

答案 0 :(得分:3)

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

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

conn.id=elem.connectionId;

答案 1 :(得分:1)

API Documents我找不到使用属性ID获取Connections的功能,即使您可以使用setParameterAPI 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

答案 2 :(得分: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" } ]
        ],
    });

答案 3 :(得分:0)

var c = instance.connect({
     source: sourceNodeId,
     target: targetNodeId                   
});
$(c).attr('id', connection_id);

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

答案 4 :(得分:0)

var connection = jsPlumb.connect({
     source: source,
     target: target
});
$(connection.canvas).attr('id', id);

请注意与{chabeee答案不同的connection.canvas