vue-transfer-three 三栏穿梭框使用

1,076 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

根据element中的transfer穿梭框自定义封装了一个三栏的穿梭框,如果需要使用该组件,目前暂时还需引入element相关的样式等(后续优化尽量使其脱离element框架使用),下面是使用该框架一些api,以供方便使用

npm i vue-transfer-three安装下载

例子

<template>
    <div id="app">
        <transferThree ref="transferThree" :data="data" :leftData="leftData" :rightData="rightData" :titles="titles" :left-default-checked="['1001']" :source-default-checked="[1,2]" :right-default-checked="['101']" filterable filter-placeholder="请输入要。。。。" :filter-method="filterMethod" :render-content="renderFunc" @left-check-change="leftCheckChange"> </transferThree>
        <el-button @click="clearFn()">重置</el-button>
    </div>
</template>

<script>

import transferThree from 'vue-transfer-three/packages/transferThree'

export default {
    name: 'App',
    components: {
        transferThree
    },

    data(){
        const generateData = _ => {
            const data = [];
            for (let i = 1; i <= 15; i++) {
                data.push({ key: i, label: `备选项 ${ i }`, pinyin: `备选项 ${ i }`
               });
            }
           return data;
        };

    return {
        data: generateData(),
        rightData:[{ key:'101',label:'测试101',pinyin:'测试101'},{ key:'102',label:'测试102',pinyin:'测试102'}],
        leftData:[{ key:'1001',label:'测试1001', pinyin:'测试1001'},{ key:'1002',label:'测试1002',pinyin:'测试1002'}],
        value: [1, 4],
        titles:['列表1','列表2','列表3'],
        filterMethod(query, item) {
            return item.pinyin.indexOf(query) > -1;
        },
        renderFunc(h, option) {
            return <span>{ option.key } - { option.label }</span>;
        }
    };
    },

    methods:{
        clearFn(){
            this.$nextTick(() => {
                // this.$refs.transferThree.clearQuery('left')
                // this.$refs.transferThree.clearQuery('middle')
                this.$refs.transferThree.clearQuery('right')
            })
        },

        leftCheckChange(val,keys){
            console.log('val',val);
            console.log('keys',keys);
        }
    }

}

</script>

vue-transfer-three 三栏穿梭框

Attributes

参数说明类型可选值默认值
data中间Transfer的数据源array[{ key, label, disabled }][ ]
leftData左边Transfer的数据源array[{ key, label, disabled }][ ]
rightData右边Transfer的数据源array[{ key, label, disabled }][ ]
titles自定义列表标题array['列表 1', '列表 2','列表 3']
left-default-checked初始状态下左侧列表的已勾选项的 key 数组array[ ]
source-default-checked初始状态下中间列表的已勾选项的 key 数组array[ ]
right-default-checked初始状态下右侧列表的已勾选项的 key 数组array[ ]
filterable是否可搜索booleanfalse
filter-placeholder搜索框占位符string请输入搜索内容
filter-method自定义搜索方法function
render-content自定义数据项渲染函数function(h, option)

Slot

name说明
left-footer左侧列表底部的内容
source-footer中间列表底部的内容
right-footer右侧列表底部的内容

Methods

方法名说明参数
clearQuery清空某个面板的搜索关键词'left' / 'middle' /'right',指定需要清空的面板

Events

事件名称说明回调参数
change列表元素发生变化时触发数据移动的方向、发生移动的数据key数组 、左侧数据列表、中间数据列表、右边数据列表
left-check-change左侧列表元素被用户选中 / 取消选中时触发当前被选中的元素的 key 数组、选中状态发生变化的元素的 key 数组
middle-check-change中间列表元素被用户选中 / 取消选中时触发当前被选中的元素的 key 数组、选中状态发生变化的元素的 key 数组
right-check-change右侧列表元素被用户选中 / 取消选中时触发当前被选中的元素的 key 数组、选中状态发生变化的元素的 key 数组