1.https://bitqiang.gitbooks.io/jsplumb/content/Chapter1_IMPORTS_AND_SETUP/ ——— 一個翻譯一半就不能打開的文檔css
2.https://github.com/wangduanduan/jsplumb-chinese-tutorial ——— 一個事件方法很全的網站(推薦)html
3.https://wdd.js.org/jsplumb-chinese-tutorial/#/ ——— 一個事件方法很全的網站(同上)vue
4.http://www.javashuo.com/article/p-wvyhfmyn-ga.html ————— jq ui 拖動node
版本:2.13.3react
庫:https://github.com/jsplumb/jsplumbgit
連接:https://pan.baidu.com/s/1EvftCI5gXRvoL6pNRenSpQ github
提取碼:z2t4npm
React vue : npm i jsplumbapp
注意:低版本須要引用jq 以及jq-ui,此版本不須要dom
let idePageJsPlumstance=’’; //初始化 componentDidMount() { idePageJsPlumstance = jsPlumb.getInstance() //關鍵函數 註冊jsplumb實例 idePageJsPlumstance.setContainer ('flow-main')//設置面板 }, //離開 componentWillUnmount() { if (idePageJsPlumstance) { idePageJsPlumstance.clear() //清空 } },
//給span註冊拖動事件 $('#flow-btns').find('span').draggable({ helper: 'clone',//拖動樣式 zIndex: 11, scope: 'flowMainCanvas',//關鍵參數 })
Scope //關鍵參數,被拖動子菜單和拖動到面板要對應相同
//樣式 let endAllPointStyle={ endpoint: 'Dot', //端點的形狀 isSource: true, //是否能夠拖動(做爲連線起點) isTarget: true, //是否能夠放置(連線終點) }
//畫圖 $('#flow-main').droppable ({ scope: 'flowMainCanvas', drop: function ( event, ui ) { let left = parseInt ( ui.offset.left) let top = parseInt ( ui.offset.top) let id = ‘node12’ let dom = 「<span id=’+id+’ >’+ui.helper.context.dataset.text+’</span>」 $ (this).append (dom) dom.css ('left', left).css ('top', top) idePageJsPlumstance.addEndpoint ( id, { anchor:"LeftMiddle" }, endAllPointStyle) //註冊端點拖桶 idePageJsPlumstance.draggable ( id) //註冊節點拖動 $ ('#' + id).draggable ({ containment:"parent", }) } })
//鏈接線的右鍵單擊事件 idePageJsPlumstance.bind ('contextmenu', function ( conn, e ) { e.preventDefault () e.stopPropagation () ///// .... }) //鏈接線的單擊事件 idePageJsPlumstance.bind ('mousedown', function ( conn, e ) { ///// .... }) //開始拖動新鏈接時 idePageJsPlumstance.bind ('beforeDrag', function ( info ) { ///// .... }) // 結束拖動新鏈接時 idePageJsPlumstance.bind ('beforeDrop', function ( info ) { ///// .... } // 鏈接事件 註冊線的參數 idePageJsPlumstance.bind ('connection', function ( info ) { ///// ... }) // 開始拖動現有鏈接 idePageJsPlumstance.bind('beforeStartDetach',function (conn) { ///// .... }) //頁面線的dom const connectors =idePageJsPlumstance.getAllConnections () //刪除點,線 節點 idePageJsPlumstance.detach(con) idePageJsPlumstance.remove(id) idePageJsPlumstance.removeAllEndpoints(id)
a . 儲存的話,先將拖動的新增節點信息保存,好比left 、id、 top 固定信息保存
再將線保存 線有五個參數 經過遍歷idePageJsPlumstance.getAllConnections() //線數據獲取,保存線的id、 sourceId、targetId 還有點錨點的起止位置參數
b . 從新代碼生成 還原節點後
idePageJsPlumstance.ready (function () { idePageJsPlumstance.connect ({ source: startKey, target:endKe, anchors: [sourcepoint, item.targetpoint ], endpoint: 'Dot', isSource: true, isTarget: true, }) })
再註冊相應的拖拽事件