我试图避免链接在空间中结束,而我只允许将一个元素与另一个元素连接的链接。我当前的代码是:
new joint.shapes.basic.Rect({
id: id,
size: {
width: width,
height: height
},
attrs: {
text: {
text: label,
'font-size': letterSize
},
rect: {
width: width,
height: height,
rx: 5,
ry: 5,
stroke: '#555',
'magnet': true
}
}
});
Run Code Online (Sandbox Code Playgroud)
对于本文:
var paper = new joint.dia.Paper({
el: $('#paper-basic'),
width: 1250,
height: 1000,
model: graph,
gridSize: 1,
validateConnection: function(cellViewS, magnetS, cellViewT, magnetT, end, linkView) {
// Prevent linking from output ports to input ports within one element.
if (cellViewS === cellViewT) return false;
// Prevent linking to input ports.
return magnetT;
},
markAvailable: true
});
Run Code Online (Sandbox Code Playgroud)
如何要求每个链接都有一个源和一个目标?也许通过扩展validateConnection?
如果仍然有用,则现在linkPinning在Paperelement 上有一个选项:
http://jointjs.com/api#dia.Paper.prototype.options
linkPinning-设置为true(默认值)时,可以将链接固定在纸张上,这意味着链接的源或目标可以是一个点。如果不想让用户将链接拖放到空白纸区域中的某处,请将其设置为false。效果是,每当用户将链接放在空白纸区域中的某个位置时,该链接将返回到其原始位置。