2016-07-06 102 views
0

我正在使用自己的自定义连接器实现,并且希望能够将其他连接器考虑到相同的元素,以便更好地计算源点和目标点。JointJS将多个自定义连接器绘制到元素上

joint.connectors.custom = function (sourcePoint, targetPoint, vertices) { 

    // I want to calculate the "middle" point while considering other links that might interrupt 
    var sourceMiddleX = this.sourceBBox.x + this.sourceBBox.width/2; 

    var d = ['M', sourcePoint.x, sourcePoint.y, targetPoint.x, targetPoint.y]; 

    return d.join(' '); 
}; 

到目前为止,我无法找到任何在功能方面也没有VElement下有用..

除非有人有更好的主意,我会通过在每个模型每个单元的总哪个环节感觉不对。

在此先感谢!

回答

0

JointJS中的连接器函数被调用的值为this等于joint.dia.LinkView实例。每个linkView访问它在渲染的文件。

var paper = this.paper; // an instance of `joint.dia.Paper` 
var graph = this.paper.model; // an instance of `joint.dia.Graph` 
var link = this.model; // an instance of `joint.dia.Link` 

// an instance of `joint.dia.Element` or `null` 
var sourceElement = link.getSourceElement(); 
var sourceElementLinks = sourceElement 
    // an array of `joint.dia.Link` including the link 
    // these are connecting the same source element as the link 
    ? graph.getConnectedLinks(sourceElement, { outbound: true }) 
    // the link is not connected to a source element 
    : []; 

// an instance of `joint.dia.Element` or `null` 
var targetElement = link.getTargetElement(); 
var targetElementLinks = targetElement 
    // an array of `joint.dia.Link` including the link 
    // these are connecting the same target element as the link 
    ? graph.getConnectedLinks(targetElement, { inbound: true }) 
    // the link is not connected to a target element 
    : []; 

您还可以检查jumpOverconnector,实现了一个类似的逻辑。