我们正在开发一个项目,该项目使用 JSPlumb 进行工作流渲染并维护一个包含节点(id、位置、文本等)和连接的单独数据模型,并使用 jsPlumb.bind 与事件保持同步
当我重新创建我的连接时,我使用源和目标参数调用 jsPlumb.connect,但似乎 ID 是在幕后创建的,因此与从数据模型加载的内容不匹配。这会很好,除非在分离时我不想通过 ID 从模型中删除该连接......
有没有办法手动设置连接器的 ID?
谢谢
我们正在开发一个项目,该项目使用 JSPlumb 进行工作流渲染并维护一个包含节点(id、位置、文本等)和连接的单独数据模型,并使用 jsPlumb.bind 与事件保持同步
当我重新创建我的连接时,我使用源和目标参数调用 jsPlumb.connect,但似乎 ID 是在幕后创建的,因此与从数据模型加载的内容不匹配。这会很好,除非在分离时我不想通过 ID 从模型中删除该连接......
有没有办法手动设置连接器的 ID?
谢谢
您可以直接从连接中设置 id:
var conn=jsPlumb.getConnections({
scope:'myScope",
source:"mySourceElement",
target:"myTargetElement"
});
conn.id=elem.connectionId;
从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
我有一个程序可以保存然后恢复整个流程图。以下是我如何以编程方式设置连接器的 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" } ]
],
});
var c = instance.connect({
source: sourceNodeId,
target: targetNodeId
});
$(c).attr('id', connection_id);
在两个节点之间创建连接时,可以将其存储在变量中。之后,可以使用 jQuery 轻松添加 ID。
var connection = jsPlumb.connect({
source: source,
target: target
});
$(connection.canvas).attr('id', id);
请注意connection.canvas
这与@chabeee 答案不同。