几个jsPlumb问题
问题描述:
我最近开始使用jsPlumb为客户端创建一个UI,但我遇到了两个我似乎无法解决的问题。几个jsPlumb问题
的jsfiddle这里:http://jsfiddle.net/ugxopksz/
首先是我的终点,而不是被重新绘制连接时,我调整窗口的大小。这个网站正在进行一些响应式设计。我试着做了整个
$(window).resize(function(){
jsPlumb.repaintEverything();
});
但是那不废话。我没有从它那里得到一个错误,但它根本没有做任何事情。
我的第二个问题是我找不到一个连接指定多个源。喜欢的东西:
instance.connect({
source:"oneT",
target:"center",
anchor:[[1, 0.5, 0, 0, 0, 80], [0, 0.5, 0, 0, 7, -40]]
});
除非我可以声明一些阵列并创建一个循环,这将使代码块数组中的每个元素。我正在寻找的原因是这个UI从数据库中提取并创建每个外部元素,因为他们可以改变我希望它能够处理,如果发生数据库更改我不必进入并手动添加新元素。
任何帮助将不胜感激。
答
对于第一个问题:
利用列表元素(LI标签)是不优选的,用于连接。相反,你可以制作div元素并尝试。由于li标签没有合适的位置,Windows的调整大小也无法重新绘制。从Doc's很清楚,具有绝对位置的元素在所有条件下都将表现正常。
查看此FIDDLE用于连接DIV元素以及调整窗口大小的重新绘制选项。
对于第二个问题:
现在jsPlumb不支持多个ID的源参数,所以你必须要比循环他们没有其他选择,在一个数组:
var trg = 'center';
var src = ['oneT','twoT','threeT'];
for(var i=0;i<src.length;i++)
{
jsPlumb.connect({
source: src[i],
target: trg,
connector: [ "Flowchart", {cornerRadius:1} ],
paintStyle:{ lineWidth:5, strokeStyle:'#3E2522' },
anchors: [[1.02, 0.5, 0, 1],
[-0.02, 0.5, 0, 0]],
endpointStyle: { radius:0.5 }
})
}
答
既然你已经使用独立的jsPlumb实例创建了连接,您必须使用同一个实例重新绘制jsPlumb组件。 以下行
jsPlumb.repaintEverything();
更改为
instance.repaintEverything();
谢谢你的答复。我会看到divs如何工作,保持这个内容将被添加和删除的想法。我猜想这会比对jsPlumb的工作更好。 – Shaazaam 2014-09-26 15:55:12
我终于有时间充分实施您的建议。一切都很好,但它仍然不会重新绘制。我已经变成了divs,并给了他们所有的绝对职位。会用百分比来摆布他们吗? – Shaazaam 2014-09-29 13:26:51
更新jsfiddle链接。 – MrNobody 2014-09-30 02:25:24