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
Because colleagues in the company need Nginx log ...
Today at work, a friend I added temporarily asked ...
Time flies, and in just six days, 2013 will becom...
Introduction to border properties border property...
This article uses the gearman+mysql method to imp...
Use the following command to create a container a...
Table of contents specification a. The page file ...
Interviewer: Have you read the source code of Vue...
Copy code The code is as follows: <html> &l...
Pre-installation work: Make sure vmware workstati...
<br />It has been no more than two years sin...
For a long time, website development was hampered...
Use indexes to speed up queries 1. Introduction I...
Resume Code: XML/HTML CodeCopy content to clipboa...
Not only does it reduce the cost of website develo...