首页 > 其他 > 详细

el-transfer增加拖拽功能

时间:2020-04-27 12:17:23      阅读:165      评论:0      收藏:0      [点我收藏+]
<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>

<script>
    export default {
        data() {
            const generateData = _ => {
                const data = [];
                for (let i = 1; i <= 15; i++) {
                    data.push({
                        key: i,
                        label: `备选项 ${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];

            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>

 

el-transfer增加拖拽功能

原文:https://www.cnblogs.com/xcr1234/p/12785683.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!