可远程搜索的a-select组件

本文详细介绍了如何在Vue中使用a-select组件实现下拉框的多选功能,支持远程搜索,包括设置选项过滤、无数据展示和数据加载逻辑。作者还分享了loadDeclarationPull和handleSearchCode方法的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能齐全的a-select下拉组件,可多选,可远程搜索
在这里插入图片描述

多选,可远程搜索,下拉框组件

<a-form-item label="合同编号" v-bind="formItemLayout">
          <a-select
            allowClear
            showSearch
            mode="multiple"
            optionFilterProp="children"
            :filter-option="false"
            :not-found-content="null"
            @search="handleSearchCode"
            @change="handleChangeCode"
            v-decorator="[
              'tcontractCode',
              {
                rules: [{ required: true, message: '请选择合同编号,支持模糊匹配' }]
              }
            ]"
            placeholder="请选择合同编号,支持模糊匹配"
          >
            <a-select-option v-for="item in tcontractCodeList" :value="item.label" :key="item.value">
              {{ item.label }}
            </a-select-option>
          </a-select>
        </a-form-item>

远程搜索首先需要设置showSearch,不使用本地数据搜索:filter-option="false",无数据时什么都不显示:not-found-content="null",设置多选模式mode="multiple",搜索函数handleSearchCode

// 远程查询函数
loadDeclarationPull (_name) {
  const _this = this
  return new Promise(resolve => {
    getDeclarationPull({ name: _name }).then(res => {
      _this.tcontractCodeList = res || []
      resolve()
    })
  })
},
// 搜索函数
handleSearchCode (value) {
  this.loadDeclarationPull(value)
},

清空数据时候allowClear调用handleChangeCode函数,清空下拉框数据重新加载全部下拉数据

handleChangeCode (value) {
  // 判断一下value不存在就加载全部数据
  if (!value || value.length < 1) {
    this.loadDeclarationPull()
  }
},

以上总结是写给别人更是写给自己,如有不对的地方或者更好的方法,欢迎留言交流,在探索的路上与君共勉!

### a-Select 组件下拉搜索使用方法 对于 `a-select` 组件中的下拉搜索功能,在 Ant Design Vue 或者其他基于 Ant Design 的框架中,该组件提供了丰富的配置选项用于支持远程搜索以及本地过滤。为了确保下拉箭头正常显示并处理好各种边界情况(比如接口返回的数据为空),可以参照如下设置: #### 基本模板结构 ```html <a-select show-search option-filter-prop="children" not-found-content="未找到匹配项" :filter-option="false" @search="handleSearch"> <a-select-option v-for="item in options" :key="item.value">{{ item.text }}</a-select-option> </a-select> ``` 这里的关键在于设置了 `show-search` 属性允许输入框内进行搜索操作,并且指定了 `not-found-content` 来定义当没有查到任何结果时所展示的文字提示。 #### 远程加载逻辑 针对远程加载的需求,则需监听 `@search` 事件触发自定义的查询函数 `handleSearch` 并传入用户的输入作为参数。此函数负责发起 AJAX 请求获取最新的数据集更新至 `options` 变量中以便渲染新的选项列表[^1]。 ```javascript export default { data() { return { loading: false, options: [] }; }, methods: { handleSearch(value) { this.loading = true; setTimeout(() => { // 模拟异步请求过程 const result = fetchRemoteDataBasedOnValue(value); // 替换成实际调用API的地方 if (result.length === 0){ this.options = []; // 清空原有选项 }else{ this.options = result.map(item=>({ value:item.id,text:item.name })); } this.loading = false; }, 200); } } } ``` 上述代码片段展示了如何通过模拟延时来模仿真实的网络延迟效果,并根据服务器端响应调整前端的选择器内容。注意要适当地管理状态变化以保持界面流畅度和用户体验的一致性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sherry Tian

打赏1元鼓励作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值