使用a-select组件实现多数据源远程搜索下拉框

前段时间写了一个用ele的组件有默认展示的数据,也能下拉触底加载新数据,然后搜索也能实现搜索远程数据,如有需要请看使用组件加自定义指令实现下拉加载select和远程搜索select_Mr.mjw的博客-CSDN博客

然后这个相对于那个实现起来简单一点

下面就是具体代码

 是在vue2中使用的先看data中的数据组件的

 <a-select show-search :value="personName" placeholder="input search text"
                                    style="width: 200px" :default-active-first-option="false" :show-arrow="false"
                                    :filter-option="false" :not-found-content="null" @search="handleSearch"
                                    @change="handleChange">
                                    <a-select-option v-for="d in data" :key="d.value">
                                        {{ d.text }}
                                    </a-select-option>
                                </a-select>
    data() {
        return {
          
            personName: '',
            data: [],

        }
    },

下面是组件中用到的方法,为了提高性能代码中用到了防抖

fetch(value, callback) {
            let timeout;
            let currentValue;
            if (timeout) {
                clearTimeout(timeout);
                timeout = null;
            }
            currentValue = value;
            function fake() {
                getAction(`这变换成你的远程数据的接口`).then(res => {
                    // console.log(res, '11111111111');
//然后把请求到的数据放到data中
                        if (currentValue === value) {
                            const result = res.result;
                            const data = [];
                            result.forEach(r => {
                                data.push({
                                    value: r.id,
                                    text: r.name,
                                });
                            });
                            callback(data);
                        }
                    })
            }
            timeout = setTimeout(fake, 300);
        },
        handleSearch(value) {
            this.fetch(value, data => (this.data = data));
        },
        handleChange(value) {
            console.log(value);
            this.personName = value;
            this.fetch(value, data => (this.data = data));
        },

按照以上步骤就可以实现简单的远程搜索,但是这个是默认没数据的

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Vue3 + TypeScript 中,您可以使用 `a-select-option` 组件来调用接口并获取所有下拉框数据。然后,您可以使用 `map` 方法遍历数据,并显示相应的内容。 首先,确保您已经安装了 `a-select-option` 组件并导入它: ```javascript import { ASelectOption } from 'a-select-option'; ``` 接下来,您可以在组件的 `data` 中定义一个变量来存储从接口获取下拉框数据: ```javascript data() { return { options: [] // 存储下拉框数据的变量 }; }, ``` 然后,在组件的 `mounted` 钩子函数中调用接口获取下拉框数据,并将其存储到 `options` 变量中: ```javascript mounted() { // 调用接口获取下拉框数据,并存储到 options 变量中 this.fetchOptions() .then((data) => { this.options = data; }) .catch((error) => { console.error('Failed to fetch options:', error); }); }, methods: { fetchOptions() { // 调用接口获取下拉框数据,返回一个 Promise 对象 // 这里假设您已经实现了一个名为 fetchData 的方法来调用接口 return fetchData(); } } ``` 最后,在模板中使用 `a-select-option` 组件和 `v-for` 指令来遍历并显示下拉框数据: ```html <a-select> <a-select-option v-for="option in options" :key="option.id" :value="option.id">{{ option.name }}</a-select-option> </a-select> ``` 这样,您就可以通过 `a-select-option` 组件调用接口获取下拉框数据,并利用 `map` 方法遍历并显示相应的内容了。请确保替换代码中的 `fetchData` 方法为您实际的接口调用方法,并根据接口返回的数据结构进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端_彭于晏

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值