2017-07-04 59 views
1

在某些情況下,我有鏈接,其中源和目標是相同的元素。 (相同的ID)。JointJS具有相同源和目標的鏈接

this.lastLink = this.link.clone().set({ 
    source: {id: ele1Id}, 
    target: {id: ele2Id}, 
    ... 

它目前看起來像這樣。鏈接有標籤,所以不要混淆它。 (LINK_TABLE是鏈接標籤)。

enter image description here

我想什麼來實現的是,每當源和目標是相同的,該鏈接應該是這個樣子。

enter image description here

我最初的嘗試是獲得目標的位置,然後增加它的一些價值。

var targetPositionX = ele2.attributes.position.x; 
    var targetPositionY = ele2.attributes.position.y; 

    source: {id: ele1Id}, 
    target: {x: targetPositionX+50, y:targetPositionY+50}, 
    ... 

但是,嘗試不起作用,因爲我試圖獲得目標位置時遇到問題。如果我願意console.log(ele2),然後尋找位置,那就沒問題。但如果我想console.log(ele2.attributes.position),它會記錄{x:0,y:0}出於某種原因。但這與這個問題無關。

那麼還有什麼可以嘗試?

回答

0

我設法通過向我的元素添加兩個端口來解決此問題。

var port = { 
    id: 'port2', 
    position:{ 
     name: 'right' 
    }, 
    markup: '<rect width="0" height="1"/>' 
    }; 
    var port2 = { 
    id: 'port1', 
    position:{ 
     name: 'right' 
    }, 
    markup: '<rect width="0" height="1"/>' 
    }; 
    ele1Id.addPort(port); 
    ele1Id.addPort(port2); 

添加鏈接後,我必須確保我也將端口添加到我的源和目標。

source: {id: ele1Id.id, port: "port1"}, 
target: {id: ele2Id.id, port: "port2"} 

我添加了對「脊柱」鏈接看看另一件事情是這樣的:

connector: { name: 'rounded' }, 
router: { name: 'manhattan' } 
相關問題