vue項(xiàng)目中使用Jsplumb總結(jié)

? ? ? 先介紹一下背景吧。最近做的一個(gè)項(xiàng)目,用到了jsplumb萧落,網(wǎng)上搜刮了一圈發(fā)現(xiàn)jsplumb的文章是不少,但是都解釋的很籠統(tǒng)洗贰,而且大部分是合jquery配合使用的找岖。所以就從官方文檔下手開始我們的vue+jsplumb(踩坑)之旅。

一敛滋、安裝?jsPlumb


vue?項(xiàng)目中安裝?jsPlumb?模塊

npm?install?jsPlumb?--save

main.js?中引入?jsPlumb(全局引入许布,也可以局部引入)

import?jsPlumb?from?‘jsplumb‘

Vue.prototype.$jsPlumb?=?jsPlumb.jsPlumb


二、使用jsplumb


組件內(nèi)部使用:this.$jsPlumb來調(diào)用

例如绎晃,我的項(xiàng)目是一個(gè)畫布蜜唾,有很多節(jié)點(diǎn)杂曲,不光要是要直接畫,而且要在讀數(shù)據(jù)的時(shí)候初始化上次的內(nèi)容....

so袁余;

1擎勘、通過后端接口取到數(shù)據(jù)。

2颖榜、在dom渲染完成之后在去進(jìn)行畫布渲染($nextTick 內(nèi)進(jìn)行initJsPlumb)棚饵。

3、正常流程:默認(rèn)情況下掩完,jsPlumb在瀏覽器的窗口中注冊(cè)噪漾,為整個(gè)頁(yè)面提供一個(gè)靜態(tài)實(shí)例,所以也可以把它看成一個(gè)類且蓬,來實(shí)例化jsPlumb:

? ? a:初始化jsplumb :this.jsplumbInstance = this.$jsPlumb.getInstance();( 重點(diǎn)提一下這里用到了jsPlumb的getInstance()方法欣硼,之前沒加會(huì)遇到一些坑,所以這里提一下這個(gè)getInstance是jsplumb的一個(gè)模塊組 可以在該方法中傳入?yún)?shù)缅疟,是一個(gè)object分别,里面可以設(shè)置一些端點(diǎn)及連線的配置項(xiàng),我這里是沒有設(shè)置存淫,因?yàn)槲倚枰獎(jiǎng)討B(tài)配置,見后文)

? ? b:在this.jsplumbInstance.ready(function() {})中去做渲染工作

1

一張圖能解決的問題沼填,就不多bb了

這里提一下桅咆;

setcontainer('你的畫布容器ID');

common就是上文提的全局的jsplumb配置項(xiàng)坞笙,我這邊在相應(yīng)位置拿到之后通過需求在自定義不同的方案后進(jìn)行渲染工作岩饼。(當(dāng)然你也可以在初始化的時(shí)候配置一套固定的)。

畫點(diǎn):

接下來就是問題較多的部分了薛夜,因?yàn)镴splumb提供了多重渲染方式籍茧,經(jīng)過測(cè)試目前通過這種方式做的渲染,個(gè)人感覺是比較ok的梯澜,至少?zèng)]QA沒問題寞冯。


2

通過調(diào)用jsplumb的addEndpoint來繪制端點(diǎn),第一個(gè)參數(shù)為該端點(diǎn)的唯一標(biāo)識(shí)晚伙,第二個(gè)參數(shù)是端點(diǎn)的配置項(xiàng)吮龄,提一下這里用的是uuid的方式,后面連線也使用uuid咆疗。第三個(gè)參數(shù)是上文提到的jsplumb默認(rèn)配置項(xiàng)漓帚。


3

需求里所有的節(jié)點(diǎn)都是可以拖動(dòng)的,其實(shí)我已經(jīng)用自定義指令實(shí)現(xiàn)了午磁,這里也調(diào)一下jsplumb的draggable方法尝抖。

畫線:

? ? 調(diào)用jsplumb的connect方法毡们,第一個(gè)參數(shù)接對(duì)象

? ? ?this.jsplumbInstance.connect( {uuids:['源端點(diǎn)id','連接點(diǎn)id']}, 配置項(xiàng)(本例中common) )

這樣其實(shí)就已經(jīng)做到每次讀取數(shù)據(jù)后,初始化端點(diǎn)及連線昧辽。

設(shè)置各個(gè)點(diǎn)的z-index:

4

其實(shí)如果正常使用感覺這點(diǎn)沒有必要漏隐,但是我們的需求是要頻繁的讀和畫,會(huì)出現(xiàn)端點(diǎn)被覆蓋的情況奴迅,所以每次讀的時(shí)候設(shè)置設(shè)置一下zindex青责。代碼如圖,簡(jiǎn)單的解釋一下取具,'jtk-endpoint'就是jsplumb畫出的端點(diǎn)元素的class脖隶,node是我的節(jié)點(diǎn)(所有的端點(diǎn)是畫在每一個(gè)節(jié)點(diǎn)里的)。dot是一個(gè)自定義的端點(diǎn)樣式暇检,為了后面好對(duì)改端點(diǎn)進(jìn)行樣式處理产阱,它是被蓋在所有端點(diǎn)下的(可以理解為jsplumb畫出的端點(diǎn)是透明的,做交互的块仆,具體樣式有dot這個(gè)元素來展現(xiàn))构蹬,至于為什么加dot ,后文再提(加需求)庄敛。注意在新建節(jié)點(diǎn)時(shí)也要設(shè)置下該節(jié)點(diǎn)的 zindex,防止 出現(xiàn)預(yù)期之外的錯(cuò)誤科汗。


最后再補(bǔ)個(gè)雞腿吧

因?yàn)樾枨笫且涗浻脩魧?duì)節(jié)點(diǎn)的拖動(dòng)位置記錄的藻烤。所以用自定義指令去實(shí)現(xiàn)的兴猩。


5

綁到每個(gè)節(jié)點(diǎn)上就可以愉快的實(shí)時(shí)記錄下該節(jié)點(diǎn)的移動(dòng)位置,已達(dá)到下次畫節(jié)點(diǎn)記錄位置的功能衅码。這里需要再update中再調(diào)用一下亿驾,不然如果刪除中間位置節(jié)點(diǎn)的情況郭蕉,inseted中的index無法更新的問題(小坑)旁振。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奸焙,更是在濱河造成了極大的恐慌瞎暑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件与帆,死亡現(xiàn)場(chǎng)離奇詭異了赌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)玄糟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門勿她,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阵翎,你說我怎么就攤上這事逢并≈纾” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵砍聊,是天一觀的道長(zhǎng)背稼。 經(jīng)常有香客問我,道長(zhǎng)玻蝌,這世上最難降的妖魔是什么蟹肘? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮俯树,結(jié)果婚禮上帘腹,老公的妹妹穿的比我還像新娘。我一直安慰自己聘萨,他們只是感情好竹椒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著米辐,像睡著了一般胸完。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翘贮,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天赊窥,我揣著相機(jī)與錄音,去河邊找鬼狸页。 笑死锨能,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芍耘。 我是一名探鬼主播址遇,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼斋竞!你這毒婦竟也來了倔约?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤坝初,失蹤者是張志新(化名)和其女友劉穎浸剩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳄袍,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绢要,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拗小。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重罪。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛆封,到底是詐尸還是另有隱情唇礁,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布惨篱,位于F島的核電站盏筐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砸讳。R本人自食惡果不足惜琢融,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望簿寂。 院中可真熱鬧漾抬,春花似錦、人聲如沸常遂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)克胳。三九已至平绩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漠另,已是汗流浹背捏雌。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笆搓,地道東北人性湿。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像满败,于是被迫代替她去往敵國(guó)和親肤频。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • setup 如果不使用jQuery或者類jQuery庫(kù)算墨,則傳入的節(jié)點(diǎn)得用id的形式,否則jsPlumb會(huì)為元素設(shè)置...
    YU_XI閱讀 12,810評(píng)論 1 8
  • feisky云計(jì)算着裹、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,867評(píng)論 0 5
  • 公司項(xiàng)目要開始做流程控制器,所以先調(diào)研下jsPlumb米同,下文是閱讀jsPlumb提供的document所產(chǎn)生的歸納...
    yaya是丫丫閱讀 3,110評(píng)論 0 2
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,814評(píng)論 0 11
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,223評(píng)論 0 3