The Core Asset Management Project requires el-transfer to add drag-and-drop sorting and drag-and-drop functions to the left, right, up, and down sides; First install sudo npm i sortablejs --save-dev HTML code <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: `option ${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 }//Solve the problem of undefined when dragging the last item on the right from the right to the left 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 } //Solve the problem of undefined when dragging the last item on the right from the right to the left 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> This is the end of this article about adding drag-and-drop function to vue element el-transfer. For more related element el-transfer drag-and-drop content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: About uniApp editor WeChat sliding problem
>>: React-native sample code to implement the shopping cart sliding deletion effect
MySQL Workbench - Modeling and design tool 1. Mod...
I won’t talk about the use of SSL certificates. F...
Use js to control the light switch for your refer...
Preface: This article mainly introduces the query...
Prerequisites for installing MySQL: Install CentO...
In the previous blog, Xiao Xiong updated the meth...
The basics of MySQL knowledge points for the seco...
Many web designers are confused about the width of...
LocalStorage stores Boolean values Today, when I ...
1. Inline style, placed in <body></body&g...
This article example shares the specific code of ...
Its function is to set a global style. Then your s...
Use examples to familiarize yourself with the mean...
Effect picture: Implementation code: <template...
Project requirements require some preprocessing o...