vue中使用element ui的input做模糊查询的爬坑记录(二)

博主此前介绍input模糊查询中v-for生成多组件传index问题,解决部分问题后仍有bug。官网示例虽实现模糊查询,但只能按文字顺序搜索,未达真正模糊查询效果。博主指出需改造方法,实现有相关内容就查询,还邀大家分享使用Element UI的困惑。

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

在之前的那篇博客中我介绍了input做模糊查询的时候出现由v-for生成多个组件的时候怎样传index的问题。解决了大部分问题但是在是用的时候还是出现了其他bug所以在这里在记录下

官网给出的例子是这样的:

在template里面:

<el-autocomplete
  v-model="state"
  :fetch-suggestions="querySearchAsync"
  placeholder="请输入内容"
  @select="handleSelect"
></el-autocomplete>

在data中

data() {
      return {
        restaurants: [],
        state: '',
        timeout:  null
      };
    },

在methods中

querySearchAsync (queryString, cb) {
      var restaurants = this.restaurants;
      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants
      cb(results)
    },
    createStateFilter (queryString) {
      return (state) => {
        return (
          state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
        )
      }
    },
    handleSelect (item) {
      console.log(item)
    },

具体的可以在elementui官网查看

官网这样我们看着实现了模糊查询但是呢,只能按照搜索内容的文字顺序搜索。没有真正意义上做到模糊查询。仔细看过方法后是createStateFilter()这个方法里的state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0需要改造下改为state.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1因为这个方法里的indexOf() === 0这块是下标等于0,而我们是要做真正的模糊查询所以我们需要改为indexOf() !== -1什么意思呢?就是有,存在的时候就查询。

修改之后的效果:

在这里插入图片描述

欢迎大家评论自己在使用element ui的时候都遇到什么困惑,我们一起聊聊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值