基于AntDesignVue的自定义Dropdown下拉选择组件

组件效果

在这里插入图片描述

组件代码

<template>
    <a-dropdown :trigger="[trigger]">
        <div class="dropdownTitle">
            <span v-text="defaultText"/>
            <a-icon type="down" />
        </div>
        <a-menu slot="overlay">
            <a-menu-item v-on:click="dropItemClick(undefined)">
                <span v-text="defaultText"/>
            </a-menu-item>
            <a-menu-item v-for="option in options" :key="option.key" v-on:click="dropItemClick(option)">
                <template v-if="option.icon">
                    <a-icon style="margin-right: 5px" :type="option.icon"/>
                </template>
                <span v-text="option.name"/>
            </a-menu-item>
        </a-menu>
    </a-dropdown>
</template>

<script>
    export default {
        name: "CustomDropdown",
        props:{
            onOptionClick:{
                type:Function,
                default:function (item) {
                    console.log(item)
                }
            },
            placeholder:{
                type:String,
                default:'全部状态',
            },
            options:{
                type:Array,
                default:function () {
                    return []
                }
            },
            trigger:{
                type:String,
                default:'click',
            }
        },
        data(){
            return {
                defaultText:this.placeholder
            }
        },
        methods:{
            dropItemClick(item){
                let that = this;
                if (item){
                    that.defaultText = item.name
                } else {
                    that.defaultText = that.placeholder
                }
                this.onOptionClick(item);
            }
        },
        mounted() {

        }
    }
</script>

<style scoped>
    .dropdownTitle{
        cursor: pointer;
    }
    .dropdownTitle .anticon-down{
        margin-left: 5px;
    }
</style>

用法

引入组件,并调用

在这里插入图片描述

配置组件参数:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值