Ant Design Vue组件中的Select 选择器实现全选/全不选功能

该代码示例展示了在Vue.js中如何使用组件创建一个多选下拉框,并添加全选和清空功能。通过监听change事件和自定义dropdownRender插槽,实现了选择项的全选和清空操作,同时数据与父组件双向绑定。
摘要由CSDN通过智能技术生成

效果

代码

<template>
    <a-select
        :value="text"
        placeholder="请选择类型"
        style="width:100%"
        showArrows
        mode="multiple"
        @change="onchange"
    >
        <div slot="dropdownRender" slot-scope="menu">//全选插槽
            <v-nodes :vnodes="menu" />
            <a-divider style="margin: 4px 0;" />
            <div style="padding: 4px 8px; cursor: pointer;" @mousedown="e => e.preventDefault()">
                <a-button type="link" @click="selectAll">全选</a-button>
                <a-button type="link" @click="clearAll">清空</a-button>
            </div>
        </div>
        <a-select-option v-for="(item,index) in couponTypeOpts" :key="index" >
            {{ item.label }}
        </a-select-option>
    </a-select>
</template>
<script>
    export default {
        name:"all-select",
        props: {
            dict:String
        },
        components:{
            VNodes: {
                functional: true,
                render: (h, ctx) => ctx.props.vnodes
            }
        },
        data() {
            return {
                text:[],
                couponTypeOpts:[],
            }
        },
        watch: {
            text(val) {
                this.$emit('input', val);
            },
        },
        created() {
            console.log(this.dict)
            this.getCouponType()
        },
        methods: {
             getCouponType(){
                this.$getDict(this.dict).then((list)=>{
                    list = list.map((i)=>{
                        return {
                            label: i.dictLabel,
                            value: i.dictValue
                        }
                    })
                    this.couponTypeOpts = list;
                })
            },
            onchange(value){
                console.log(value)
                this.text=value
            },
            selectAll(){
                this.text=[]
                this.text=this.couponTypeOpts.map((item,index)=>{
                    return Number(index)
                })
                console.log(this.text)
            },
            clearAll(){
                this.text=[]

            }
        },
    }
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值