码迷,mamicode.com
首页 > 其他好文 > 详细

el-transfer增加拖拽功能

时间:2020-04-27 13:51:11      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:let   agg   model   ftp   bsp   nsf   indexof   default   temp   

<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增加拖拽功能

标签:let   agg   model   ftp   bsp   nsf   indexof   default   temp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!