2013-03-16 56 views
3

我正在使用jsPlumb作爲中等大小的項目。儘管文檔在實體解釋方面很薄弱,但我已經完成了該項目,現在我已準備好提供它。jsPlumb在調用setPaintStyle()時刪除直接連接

就在交貨日期之前,我被要求讓連接線變直而不是彎曲。我認爲這將會像向以下jsPlumb連接方法中添加關鍵字那樣簡單:jsPlumb.connect({ connector: 'Straight'... }) ...而且是。所以有什麼問題?

我正在處理的這個項目必須允許用戶「選擇」連接線,以便他們可以按下「刪除」按鈕清除他們選擇的連接。我已經允許用戶通過調用jsPlumb的setPaintStyle()方法,像這樣選擇連接:

// Select/Deselect each connection on click 
jsPlumb.bind('click', function (connection, e) { 
    e.preventDefault(); 

    connection.setPaintStyle({ 
     strokeStyle: 'red' 
    }); 
}); 

可正常工作,只有當線是彎曲的(jsPlumb默認)。

然而,當我點擊他們,如果在connect()方法connector選項更改爲「直」,連接是垂直線(其端點彼此對面)完全消失。沒有直接相互對立的端點的其餘直線沒有這個問題。

完全取消連接器選項,或將其值設置爲「貝塞爾」,或者當該選項設置爲「直線」時不調用setPaintStyle()方法,則點擊的線保持原樣。

這裏是一個jsBin例如:jsPlumb setPaintStyle() with Straight lines bug

起初我以爲這是我的應用程序中的錯誤,但花費了大量的時間後,我跟蹤這個問題下到setPaintStyle()方法。我感到非常有信心,這是一個jsPlumb錯誤,但我不完全確定。在這一點上,這是非常令人沮喪的,因爲唯一阻礙我交付項目的原因是能夠將筆觸顏色更改爲紅色。如果我可以用直線完成這個簡單的任務,那麼我可以繼續前進。我已經考慮過自己的目標SVG路徑節點,並改變筆畫的顏色,但由於jsPlumb使用VML的IE8(ie8是這個項目的要求),我不知道我可以做那。有什麼建議麼?

回答

3

對於其他人可能會遇到這個令人沮喪的jsPlumb錯誤。花了我整個星期六尋找修復之後,終於找到了解決辦法。

除了使用setPaintStyle()方法來改變筆畫顏色,我實際上使用了getPaintStyle()repaint()方法的組合。這是一個固定的jsBin示例:http://jsbin.com/ogekot/7/edit

jsPlumb.bind('click', function (connection, e) { 
    e.preventDefault(); 

    connection.getPaintStyle().strokeStyle = '#CE322A'; 
    connection.repaint() 
}); 
+0

我們遇到了同樣的問題,但是您的解決方案無法正常工作。 – Qerjiuthn 2016-06-28 08:13:43

+0

非常感謝你這篇文章。它有助於。我修理我的。 http://stackoverflow.com/questions/38068890/get-jsplumb-line-color-after-setpaintstyle – Qerjiuthn 2016-06-28 08:32:00