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

关于element ui模糊搜索的问题

element ui官网关于input框的模糊搜索没有过于多的解释,在使用的过程中或多或少都会出现一些想拿一些值拿不到的情况。

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

在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官网查看

当需求出现由v-for生成多个组件的时候,而element ui提供的这个组件只能取到数据的value值,虽然在handleSelect中能取到当前选中数据的每一个值,但是对于有的时候需要用到index的时候怎样把index传进去呢?

经试验@select="handleSelect(item, index)"这样直接把index传入是不行的,而需要这样@select="(item) => { handleSelect(item, index); }"然后在handleSelect中就能取到index了

参考资料:https://yuyuye958.github.io/2019/03/10/el-autocomplete/

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue使用element-uiInput组件实现模糊查询,你可以通过v-model绑定输入框的值,并监听输入框的change事件,在事件处理函数调用接口进行查询操作。另外,你可以使用element-ui的Autocomplete组件来实现带有下拉提示的模糊查询效果。 示例代码如下: ```html <template> <div> <el-input v-model="keyword" @change="handleSearch" placeholder="请输入关键字"></el-input> <el-autocomplete v-model="selectedValue" :fetch-suggestions="querySearch" placeholder="请输入关键字" @select="handleSelect"> <template slot-scope="{ item }">{{ item }}</template> </el-autocomplete> </div> </template> <script> export default { data() { return { keyword: '', selectedValue: '', suggestions: [] }; }, methods: { handleSearch() { // 调用接口进行查询操作,将查询结果更新到suggestions数组 // 示例代码直接使用了一个固定的suggestions数组作为演示,请根据实际需求进行修改 this.suggestions = ['结果1', '结果2', '结果3']; }, querySearch(queryString, cb) { // 在这里可以根据输入的queryString调用接口获取匹配的结果,并通过cb回调函数返回给Autocomplete组件 // 示例代码直接使用了一个固定的suggestions数组作为演示,请根据实际需求进行修改 const results = queryString ? this.suggestions.filter(item => item.includes(queryString)) : this.suggestions; cb(results); }, handleSelect(item) { // 处理选某个下拉项的逻辑 console.log('选的项:', item); } } }; </script> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值