element plus tree拖動(dòng)節(jié)點(diǎn)交換位置和改變層級(jí)問題(解決方案)
圖層list里有各種組件,用element plus的tree來渲染,可以把圖片等組件到面板里,面板是容器,非容器組件,比如圖片、文本等,就不能讓其他組件拖進(jìn)來。
主要在于allow-drop屬性的回調(diào)函數(shù)編寫,要理清楚思路,什么時(shí)候allow-drop返回true,什么時(shí)候返回false。
allow-drop回調(diào)函數(shù)參數(shù)里的type,有三個(gè)值:before、after、inner,這是解決問題的關(guān)鍵點(diǎn)。
比如把A節(jié)點(diǎn)向B節(jié)點(diǎn)拖動(dòng),before表示把A拖到B的前面,after表示把A拖到B的后面,inner表示把A拖到B里面去。
對(duì)于面板容器來說,這三種位置都是允許drop的,allow-drop的返回值一定是true;
對(duì)于其他組件來說,只有before和after是允許的,所以當(dāng)type不等于inner的時(shí)候,allow-drop的返回值才是true,否則是false。
html代碼:
關(guān)鍵點(diǎn):draggable為true,設(shè)置allow-drop方法
<el-tree ref="treeRef" style="width: 200px; margin-top: 10px" :data="designerStore.cacheComponents" draggable node-key="id" highlight-current v-if="flag" :current-node-key="designerStore.currentCpt ? designerStore.currentCpt.id : null" :allow-drop="allowDrop" :props="{ label: 'cptTitle', id: 'id', children: 'children' }" empty-text="無圖層"> <template #default="{ node, data }"> <span class="custom-tree-node" @dblclick.stop="editCateName(data, node)" @mousedown="showConfigBar(data)" @contextmenu.prevent="showContextMenu"> <img class="selectedItem-icon" :src="require('@/assets/icon/components/' + getIcon(data) + '.svg')" /> <el-input v-model="data.cptTitle" v-if="isEdit === data.id" :ref="data.id" placeholder="請(qǐng)輸入" @blur="editSave()" @keyup.enter="editSave()" size="small" /> <span v-else>{{ data.cptTitle }}</span> </span> </template> </el-tree>
allow-drop方法:
allowDrop(draggingNode, dropNode, type) { if (dropNode.data.cptKey === 'cpt-panel') { return true } else { return type !== 'inner' } }
最終效果:
到此這篇關(guān)于element plus tree拖動(dòng)節(jié)點(diǎn)交換位置和改變層級(jí)的文章就介紹到這了,更多相關(guān)element plus tree拖動(dòng)節(jié)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue中使用elementui與Sortable.js實(shí)現(xiàn)列表拖動(dòng)排序
- 關(guān)于Element UI table 順序拖動(dòng)方式
- vue/Element?UI實(shí)現(xiàn)Element?UI?el-dialog自由拖動(dòng)功能實(shí)現(xiàn)
- 解決element-ui table設(shè)置列fixed時(shí)X軸滾動(dòng)條無法拖動(dòng)問題
- vue使用Element的Tree樹形控件實(shí)現(xiàn)拖動(dòng)改變節(jié)點(diǎn)順序方式
- elementplus+splitpanes實(shí)現(xiàn)左右拖動(dòng)控制寬度的項(xiàng)目實(shí)踐
相關(guān)文章
vue中實(shí)現(xiàn)展示與隱藏側(cè)邊欄功能
這篇文章主要介紹了vue中實(shí)現(xiàn)展示與隱藏側(cè)邊欄功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Vue.js結(jié)合SortableJS實(shí)現(xiàn)樹形數(shù)據(jù)拖拽
本文主要介紹了Vue.js結(jié)合SortableJS實(shí)現(xiàn)樹形數(shù)據(jù)拖拽,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05vuex刷新頁面后如何解決丟失store的數(shù)據(jù)問題
這篇文章主要介紹了vuex刷新頁面后如何解決丟失store的數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue+element-ui實(shí)現(xiàn)主題切換功能
這篇文章主要介紹了vue+element-ui實(shí)現(xiàn)主題切換功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06vue-router中 query傳參和params傳參的使用和區(qū)別講解
這篇文章主要介紹了vue-router中 query傳參和params傳參的使用和區(qū)別講解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01Vue實(shí)現(xiàn)docx/xlsx/pdf等類型文件預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了如何溧陽Vue實(shí)現(xiàn)docx/xlsx/pdf等類型文件預(yù)覽功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-02-02Vue使用codemirror實(shí)現(xiàn)一個(gè)可插入自定義標(biāo)簽的textarea
這篇文章主要為大家詳細(xì)介紹了Vue如何使用codemirror實(shí)現(xiàn)一個(gè)可插入自定義標(biāo)簽的textarea,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02使用el-form之表單校驗(yàn)自動(dòng)定位到報(bào)錯(cuò)位置問題
這篇文章主要介紹了使用el-form之表單校驗(yàn)自動(dòng)定位到報(bào)錯(cuò)位置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05