JointJS:创建链接时需要目标元素

Pat*_*ito 3 jointjs

我试图避免链接在空间中结束,而我只允许将一个元素与另一个元素连接的链接。我当前的代码是:

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

Mic*_*sky 5

如果仍然有用,则现在linkPinningPaperelement 上有一个选项:

http://jointjs.com/api#dia.Paper.prototype.options

linkPinning-设置为true(默认值)时,可以将链接固定在纸张上,这意味着链接的源或目标可以是一个点。如果不想让用户将链接拖放到空白纸区域中的某处,请将其设置为false。效果是,每当用户将链接放在空白纸区域中的某个位置时,该链接将返回到其原始位置。