vue element el-transfer增加拖拽功能
芯資管項(xiàng)目要求el-transfer增加拖拽排序,左右上下互相拖拽功能;
原來(lái)的組件不支持拖拽,這里要用個(gè)第三方脫宅組件sortablejs
首先安裝
sudo npm i sortablejs --save-dev
html代碼
<template> <el-transfer ref="transfer" id="transfer" v-model="value" :data="data"> <span slot-scope="{ option }" :draggable="!option.disabled" @dragstart="drag($event,option)">{{ option.key }} - {{ option.label }}</span> </el-transfer> </template>```
create
<script> import Sortable from 'sortablejs' export default { data() { const generateData = _ => { const data = []; for (let i = 1; i <= 15; i++) { data.push({ key: i, label: `備選項(xiàng) ${i}`, disabled: i % 4 === 0 }); } return data; }; return { data: generateData(), value: [1, 4], draggingKey : null } }, mounted() { const transfer = this.$refs.transfer.$el const leftPanel = transfer.getElementsByClassName("el-transfer-panel")[0].getElementsByClassName("el-transfer-panel__body")[0]; const rightPanel = transfer.getElementsByClassName("el-transfer-panel")[1].getElementsByClassName("el-transfer-panel__body")[0]; const rightEl = rightPanel.getElementsByClassName("el-transfer-panel__list")[0] Sortable.create(rightEl,{ onEnd: (evt) => { const {oldIndex,newIndex} = evt; const temp = this.value[oldIndex] if (!temp || temp === 'undefined') { return }// 解決右邊最后一項(xiàng)從右邊拖左邊,有undefined的問(wèn)題 this.$set(this.value,oldIndex,this.value[newIndex]) this.$set(this.value,newIndex,temp) } }) const leftEl = leftPanel.getElementsByClassName("el-transfer-panel__list")[0] Sortable.create(leftEl,{ onEnd: (evt) => { const {oldIndex,newIndex} = evt; const temp = this.data[oldIndex] if (!temp || temp === 'undefined') { return } // 解決右邊最后一項(xiàng)從右邊拖左邊,有undefined的問(wèn)題 this.$set(this.data,oldIndex,this.data[newIndex]) this.$set(this.data,newIndex,temp) } }) leftPanel.ondragover = (ev) => { ev.preventDefault() } leftPanel.ondrop = (ev) => { ev.preventDefault(); const index = this.value.indexOf(this.draggingKey) if(index !== -1){ this.value.splice(index,1) } } rightPanel.ondragover = (ev) => { ev.preventDefault() } rightPanel.ondrop = (ev) => { ev.preventDefault(); if(this.value.indexOf(this.draggingKey) === -1){ this.value.push(this.draggingKey) } } }, methods: { drag(ev,option) { this.draggingKey = option.key } } } </script>
到此這篇關(guān)于vue element el-transfer增加拖拽功能的文章就介紹到這了,更多相關(guān)element el-transfer拖拽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue+abp微信掃碼登錄的實(shí)現(xiàn)代碼示例
- 如何封裝Vue Element的table表格組件
- vue+element table表格實(shí)現(xiàn)動(dòng)態(tài)列篩選的示例代碼
- vue element和nuxt的使用技巧分享
- vue+elementui通用彈窗的實(shí)現(xiàn)(新增+編輯)
- vue+element UI實(shí)現(xiàn)樹(shù)形表格
- vue+elementUI動(dòng)態(tài)增加表單項(xiàng)并添加驗(yàn)證的代碼詳解
- vue使用element-ui實(shí)現(xiàn)表單驗(yàn)證
- Vue Element前端應(yīng)用開(kāi)發(fā)之整合ABP框架的前端登錄
相關(guān)文章
vue-cli3項(xiàng)目生產(chǎn)和測(cè)試環(huán)境分包后文件名和數(shù)量不一致解決
這篇文章主要為大家介紹了vue-cli3項(xiàng)目生產(chǎn)和測(cè)試環(huán)境分包后文件名和數(shù)量不一致解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能實(shí)例
這篇文章主要給大家介紹了關(guān)于VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能的相關(guān)資料,html5-qrcode是輕量級(jí)和跨平臺(tái)的QR碼和條形碼掃碼的JS庫(kù),集成二維碼、條形碼和其他一些類型的代碼掃描功能,需要的朋友可以參考下2023-08-08Vue中?引入使用?babel-polyfill?兼容低版本瀏覽器的方法
最近在項(xiàng)目中使用 webpack 打包后升級(jí),用戶反饋使用瀏覽器(chrome 45)訪問(wèn)白屏。經(jīng)過(guò)排查發(fā)現(xiàn):由于 chrome 45 無(wú)法兼容 ES6 語(yǔ)法導(dǎo)致的,接下來(lái)給大家介紹下Vue中?引入使用?babel-polyfill?兼容低版本瀏覽器方法,需要的朋友可以參考下2023-02-02詳解Webstorm 新建.vue文件支持高亮vue語(yǔ)法和es6語(yǔ)法
這篇文章主要介紹了Webstorm 添加新建.vue文件功能并支持高亮vue語(yǔ)法和es6語(yǔ)法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10vue實(shí)現(xiàn)動(dòng)態(tài)路由詳細(xì)
我們開(kāi)發(fā)后臺(tái)管理系統(tǒng)過(guò)程中,會(huì)由不同的人操作系統(tǒng),有admin(管理員)、superAdmin(超管),及各種運(yùn)營(yíng)、財(cái)務(wù)人員。為了區(qū)別這些人員,會(huì)給不同的人分配不一樣的角色來(lái)展示不同的菜單,這就必須要通過(guò)動(dòng)態(tài)路由來(lái)實(shí)現(xiàn)。下面就來(lái)介紹vue實(shí)現(xiàn)動(dòng)態(tài)路由,需要的朋友可參考一下2021-10-10vue?圖片路徑?“@/assets“?報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了vue?圖片路徑?“@/assets“?報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09element?el-upload文件上傳覆蓋第一個(gè)文件的實(shí)現(xiàn)
這篇文章主要介紹了element?el-upload文件上傳覆蓋第一個(gè)文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Vue3實(shí)現(xiàn)LuckSheet在線預(yù)覽Excel表格
在前端開(kāi)發(fā)中預(yù)覽Excel文件是常見(jiàn)的需求之一,本文將介紹如何使用Vue.js框架以及兩個(gè)優(yōu)秀的Excel庫(kù)——LuckyExcel和Luckysheet,來(lái)實(shí)現(xiàn)Excel文件在線預(yù)覽功能,希望對(duì)大家有所幫助2023-11-11