2014-01-12 77 views
1

我想在鏈接中自引用形狀。基本上鍊接的來源和目標是相同的。JOINTJS:自引用鏈接中的形狀

這是工作,但該鏈接是由形狀隱藏: https://imageshack.com/i/f2mu7jp

這裏是我想要做什麼: https://imageshack.com/i/mujp9lp

我知道我可以在定義使用「頂點」一個鏈接,但我不知道開始的XY位置和終點

var connect = function(source, sourcePort, target, targetPort) { 
    var link = new joint.shapes.devs.Link({ 
     source: { id: source.id, selector: source.getPortSelector(sourcePort) }, 
     target: { id: target.id, selector: target.getPortSelector(targetPort) } 
    }); 
    if(source == target){ 
     console.log(link); 
     console.log(source); 
    } 

    graph.addCell(link); 
}; 

我怎樣才能獲得起點和終點的位置?

謝謝

回答

1

這不是官方的API中但對鏈接意見getConnectionPoint()方法。通過了解連接點,您可以計算自連接所需的2個頂點:

...在graph.addCell(鏈接)之後... - 此時鏈接視圖在論文中創建。 。

var linkView = paper.findViewByModel(link); 
var sourcePoint = linkView.getConnectionPoint(
    'source', 
    link.get('source'), 
    _.first(link.get('vertices')) || link.get('target')); 
var targetPoint = linkView.getConnectionPoint(
    'target', 
    link.get('target'), 
    _.last(link.get('vertices')) || sourcePoint); 

...現在你可以計算出2個其他頂點(正交自行鏈接),這樣做:

link.set('vertices', myTwoVertexArray); 

的getConnectionPoint()方法的簽名是:

getConnectionPoint(end, sourceOrTargetOrPoint, referenceSourceOrTargetOrPoint); 

哪裏end要麼'source''target'sourceOrTargetOrPoint要麼link.get('source')link.get('target')referenceSourceOrTargetOrPoint是計算「粘性」點(通常是鏈接或最接近的頂點的另一側)所需的參考點。