使用jsPlumb,我成功地进行了以下设置:
先举个小例子:http://fiddle.darkspot.ch/ivr/flowchart/ivrplumb.html (经过一个小时的尝试,不幸的是我没有让它在JSFIDLE上运行——所以我自己主持了它)
我想要实现的是:如果用户将新连接从一个出口拖到另一个节点,那么应该按照预期建立连接。但是应该删除此出口上的所有其他连接。
我尝试了不同的方法:
点击监听器(指向jsPlumb文档的链接)。不起作用-
繁殖步骤:
将鼠标移动到其中一个橙色正方形上,单击并拖动连接到另一个节点。(应建立连接)
我做错了什么?
我在角项目上使用JSPLUMB,我做了这个解决方案:
删除连接(如果存在),然后删除新连接:
this.jsPlumbInstance.bind('beforeDrop', params => {
// DELETA CONEXAO CASO JA EXISTE PARA CRIAR OUTRA
// REMOVE CURRENT CONNECTION IF EXIST TO CREATE NEW
this.jsPlumbInstance.getConnections().map(connection => {
if (connection.targetId === params.targetId && connection.sourceId === params.sourceId) {
this.jsPlumbInstance.deleteConnection(connection);
}
});
});
JSPLUMB没有“afterDrop”绑定,所以保留此解决方案。
创建一个全局数组变量,并将每个新连接推送到该数组
var cons = [];
instance.bind("connection", function (info) {
var src = info.sourceId;
var trgt = info.targetId;
if (!cons.includes(src+trgt)) {//if not exists
cons.push(src+trgt);
cons.push(trgt+src);//(optional) use to prevent adding connection from target to source
}
});
然后在beforeDrop中,检查要创建的新连接是否已存在于阵列中。
instance.bind('beforeDrop', function(info){
var createCon = true;
var src = info.sourceId;
var trgt = info.targetId;
var newCon = src + trgt;
if(cons.includes(newCon)){//if new connection exists do not allow to create new connection
createCon = false;
}
return createCon;
});
并在移除连接时移除数组中的元素。
instance.bind("click", function (info) {
var el = cons.indexOf(info.sourceId + info.targetId);
var el2 = cons.indexOf(info.targetId + info.sourceId);
cons.splice(el, 1);
cons.splice(el2, 1);
instance.deleteConnection(info);
});
在建立新连接之前,请检查源是否已经有传出连接,如果有,请将其删除。假设退出元素具有exit
类:
jsPlumb.bind('beforeDrop', function(ci){ // Before new connection is created
var src=ci.sourceId;
var con=jsPlumb.getConnections({source:src}); // Get all source el. connection(s) except the new connection which is being established
if(con.length!=0 && $('#'+src).hasClass('exit')){
for(var i=0;i<con.length;i++){
jsPlumb.detach(con[i]);
}
}
return true; // true for establishing new connection
});
我正在使用jsplumb,但是我无法删除两个只有一个div的id的div之间的连接。
我正在使用jsPlumb创建一个包含两列的匹配小部件。 jsPlumb实例创建为: 我创建了源和目标,如下所示: 连接过程正常工作。但是在建立一个连接后的问题如果我删除连接,连接endpoint仍然可见。 我尝试添加配置“\u deleteondetch”,还尝试删除connectiondeach上的endpoint。在这两种情况下,endpoint都被删除,但在我尝试连接相同的元素时,它会出错。
我正在处理一个管道问题。当我试图以编程方式删除所有元素连接时,我得到了未捕获的TypeError:无法读取未定义的属性“left” 我有几个节点(html元素),每个都有1个输入endpoint(接受的终端)和n个输出endpoint。每个节点后面还有一个javascript对象。我的软件中有一个“选定”状态。用户可以选择多个节点,并将对象推送到一个称为选择的数组。我有一个删除键的键侦听器。当按下
我想画一个流程图。我动态创建div,并为每个div设置了唯一的“id”属性,并使用Jsplumb连接器连接它们。 我从数据库中获取源和目标id(请注意,动态创建的div的“id”属性是其从数据库中的id),并存储在“connectors”json中。其格式如下: {[from:A,to:B],[from:A,to:C],[from:B,to:C]} jsplumb代码如下 问题: 我现在拥有的是
我有div,可以拖放到绘图区域。可以使用鼠标从源endpoint拖放到目标endpoint手动连接这些div。在这样创建的连接上,连接被分离,但endpoint保留,删除的连接可以通过上述相同的手动过程重新创建。现在,我还将以json格式的连接节点流程图形式的绘图保存到磁盘文件中。在加载文件时,流程图会完美地显示所有连接和节点。现在我在点击一个节点时删除一个连接,它就可以工作了。但是现在我不能再次
我试图以编程方式建立一些连接。问题是,当绘制连接时,会创建新的endpoint,而现有endpoint不再可单击。我确实有拖动行为的endpoint。我无法让endpoint(由连接创建)具有与原始endpoint相同的属性。 我做了一个工作jsFiddle:http://jsfiddle.net/SCSaf/4/ 在下面的代码中,初始化容器并绘制连接 在公共变量中,我尝试将源endpoint(e