我有一个问题,我或多或少使用jsPlumb流程图演示示例,但每个窗口只有一个放置目标,并且可能有一个或多个拖动目标。但是,我想禁止自我连接,以便可以将连接从任何窗口拖动到任何其他窗口除外。
我在想,也许你会使用范围,但这意味着每个窗口的范围不同,这似乎超过了顶部。有没有人有一个整洁的解决方案?
答案 0 :(得分:1)
感谢他们的答案,他们指出了我正确的方向。最后使用" beforeDrop" 当绑定"连接"它正在分离窗口的源端点以及连接。
最终解决方案是:
instance.bind("beforeDrop", function (info) {
// console.log("before drop: " + info.sourceId + ", " + info.targetId);
if (info.sourceId === info.targetId) { //source and target ID's are same
console.log("source and target ID's are the same - self connections not allowed.")
return false;
} else {
return true;
}
});
答案 1 :(得分:1)
来自http://www.jsplumb.org/doc/connections.html#draganddrop
防止环回连接
仅在vanilla jsPlumb中,您可以指示jsPlumb防止环回连接,而不必求助于beforeDrop拦截器。您可以通过在传递给makeTarget方法的参数上设置allowLoopback:false来执行此操作:
jsPlumb.makeTarget("foo", {
allowLoopback:false
});
答案 2 :(得分:0)
绑定事件以在创建新连接时收到通知。创建连接后,检查连接的源和目标是否相同,如果是,则断开该连接以避免自循环。代码:
jsPlumb.bind("jsPlumbConnection", function(ci) {
var s=ci.sourceId,c=ci.targetId;
if( s===c ){ //source and target ID's are same
jsPlumb.detach(ci.connection);
}
else{ // Keep connection if ID's are different (Do nothing)
// console.log(s+"->"+c);
}
});