el-transfer增加拖拽功能

<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>

 

上一篇:Codeforces 1242B(0-1 MST)


下一篇:使用VSS2005的时候报错:输入正确的服务器地址依然出错了