antd pro of vue:a-select多选加搜索框

antd a-select多选加搜索框

目录

antd a-select多选加搜索框


1.实现效果 :在多选框中输入内容会匹配符合条件的列表展示在下拉框中

<a-select
                  :value="nowProduct"
                  placeholder="查看全部"
                  mode="multiple"
                  @change="onProductChange"
                  show-search
                  :filter-option="filterOption"
                  option-filter-prop="children"
                  :autoClearSearchValue="false"
                >
                  <a-select-option v-for="item in productType" :key="item.product_name" :value="item.product_id">
                    {{ item.product_name }}
                  </a-select-option>
                </a-select>
    filterOption(input, option) {
      return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
    },

2.关键配置项

                  show-search                                  使单选模式可搜索

                  :filter-option="filterOption"             是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false

                  option-filter-prop="children"           搜索时过滤对应的 option 属性,如设置为 children 表示对内嵌内容进行搜索

                  :autoClearSearchValue="false"     最重要!!!!!!是否在选中项后清空搜索框,只在 modemultipletags 时有效。(否则输入关键字后只能选择一个选项就被清空)

可以通过监听第一个 Select 的 change 事件,然后根据选择的值来动态更新第二个 Select 的选项。 具体步骤如下: 1. 定义两个 Select 组件,并为它们分别绑定 value 和 options 属性。 ```html <template> <div> <a-select mode="multiple" :value="selectedValues" @change="handleFirstSelectChange" > <a-select-option v-for="option in firstOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> <a-select mode="multiple" :value="secondSelectedValues"> <a-select-option v-for="option in secondOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> </div> </template> ``` 2. 在组件的 data 中定义两个数组,分别用于存储第一个 Select 和第二个 Select 的选项以及选中的值。 ```javascript export default { data() { return { selectedValues: [], secondSelectedValues: [], firstOptions: [ { label: 'Option 1', value: 1 }, { label: 'Option 2', value: 2 }, { label: 'Option 3', value: 3 }, ], secondOptions: [ { label: 'Option A', value: 'A' }, { label: 'Option B', value: 'B' }, { label: 'Option C', value: 'C' }, ], }; }, // ... }; ``` 3. 实现第一个 Select 的 change 事件处理方法。 ```javascript export default { // ... methods: { handleFirstSelectChange(value) { // 根据选择的值动态更新第二个 Select 的选项 if (value.includes(1)) { this.secondOptions = [ { label: 'Option A', value: 'A' }, { label: 'Option B', value: 'B' }, ]; } else if (value.includes(2)) { this.secondOptions = [ { label: 'Option B', value: 'B' }, { label: 'Option C', value: 'C' }, ]; } else { this.secondOptions = [ { label: 'Option A', value: 'A' }, { label: 'Option C', value: 'C' }, ]; } // 重置第二个 Select 的选中值 this.secondSelectedValues = []; }, }, }; ``` 4. 最后,将第二个 Select 组件的 value 属性绑定到组件的 secondSelectedValues 数据属性上。 ```html <a-select mode="multiple" :value="secondSelectedValues"> <a-select-option v-for="option in secondOptions" :key="option.value"> {{ option.label }} </a-select-option> </a-select> ``` 这样,当用户选择第一个 Select 的选项时,第二个 Select 的选项会根据选择的值动态更新,并且第二个 Select 的选中值会被重置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值