vue输入框使用模糊搜索功能的实现代码

下面是关于使用Vue实现输入框模糊搜索的攻略。

1. 环境准备

首先需要准备一个Vue开发环境。我们可以使用Vue CLI进行快速构建,也可以手动搭建一个Vue项目。

2. 安装依赖

在项目根目录下通过命令行安装axioselement-ui

npm install axios element-ui

3. 创建输入框组件

使用<el-input>组件创建一个输入框, 并为其添加v-model指令进行双向绑定:

<template>
  <el-input v-model="keyword" @input="handleInput"></el-input>
</template>

<script>
export default {
  data() {
    return {
      keyword: ''
    }
  },
  methods: {
    handleInput(val) {
      // 处理输入框中的值
    }
  }
}
</script>

4. 发送网络请求

使用axios发送网络请求,获取到数据后将其保存至options中:

<script>
import axios from 'axios';

export default {
  data() {
    return {
      keyword: "",
      options: [] // 输入框下拉选项列表
    };
  },
  methods: {
    handleInput(val) {
      // 发送网络请求
      axios
        .get("your-api-url?keyword=" + val)
        .then(res => {
          this.options = res.data; // 将数据保存至选项列表
        });
    }
  }
};
</script>

5. 显示下拉选项列表

使用<el-autocomplete>组件来显示下拉选项列表,并为其绑定optionsv-model指令:

<template>
  <el-autocomplete
    v-model="keyword"
    :fetch-suggestions="querySearch"
    placeholder="请输入..."
    @select="handleSelect"
  ></el-autocomplete>
</template>

<script>
import axios from "axios";

export default {
  data() {
    return {
      options: [],
      keyword: ""
    };
  },
  methods: {
    querySearch(queryString, cb) {
      axios
        .get("your-api-url?keyword=" + queryString)
        .then(res => {
          cb(res.data); // 回调函数返回匹配到的结果
        });
    },
    handleSelect(item) {
      console.log(item);
    }
  }
};
</script>

以上就是一个简单的Vue输入框模糊搜索的实现。

下面提供两条示例:

示例一

针对一个本地数组进行模糊搜索:

<template>
  <div>
    <el-input v-model="keyword" @input="handleInput"></el-input>
    <div v-if="!loading">
      <div v-for="(item, index) in options" :key="index">{{ item }}</div>
    </div>
    <div v-else>loading...</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      keyword: "",
      options: [], // 输入框下拉选项列表
      loading: false
    };
  },
  methods: {
    handleInput(val) {
      this.options = []; // 清空选项
      val = val.toLowerCase(); // 统一字母大小写
      this.loading = true; // 开始加载动画

      // 模拟网络延迟
      setTimeout(() => {
        // 从数组中查找匹配项,添加至选项列表中
        this.options = [
          "apple",
          "banana",
          "cherry",
          "durian",
          "elderberry",
          "fig",
          "grape",
          "honeydew",
          "jackfruit",
          "kiwi",
          "lemon",
          "mango",
          "nectarine",
          "orange",
          "pear",
          "quince",
          "raspberry",
          "strawberry",
          "tangerine",
          "ugli fruit",
          "vanilla bean",
          "watermelon",
          "xigua",
          "yangmei",
          "zucchini"
        ].filter(item => item.includes(val));

        this.loading = false; // 关闭加载动画
      }, 1000);
    }
  }
};
</script>

示例二

使用lodashdebounce函数进行防抖处理:

<template>
  <div>
    <el-input v-model="keyword" @input="handleInput"></el-input>
    <div v-if="!loading">
      <div v-for="(item, index) in options" :key="index">{{ item }}</div>
    </div>
    <div v-else>loading...</div>
  </div>
</template>

<script>
import axios from "axios";
import debounce from "lodash/debounce";

export default {
  data() {
    return {
      keyword: "",
      options: [], // 输入框下拉选项列表
      loading: false
    };
  },
  methods: {
    querySearch(queryString, cb) {
      axios
        .get("your-api-url?keyword=" + queryString)
        .then(res => {
          cb(res.data); // 回调函数返回匹配到的结果
        });
    },
    handleInput: debounce(function(val) {
      this.loading = true;
      this.querySearch(val, data => {
        this.loading = false;
        this.options = data;
      });
    }, 200)
  }
};
</script>

以上就是使用Vue实现输入框模糊搜索的完整攻略,希望能够对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue输入框使用模糊搜索功能的实现代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue在自定义指令绑定的处理函数中传递参数

    自定义指令在Vue中是一个很实用的特性,可以用于很多场景,例如对表单数据的自动验证,在DOM元素渲染前做一些操作等。 在开发过程中,我们有时需要在自定义指令的绑定处理函数中传递一些参数,来实现更加灵活多样的功能。那么如何在Vue自定义指令中传递参数呢? 下面是两个实例说明: 实例1:传递固定的参数 如果我们要在自定义指令中传递一些固定的参数,例如一个字符串,…

    Vue 2023年5月28日
    00
  • vue给对象动态添加属性和值的实例

    下面是详细讲解“vue给对象动态添加属性和值的实例”的完整攻略: 1. 前置知识 在使用Vue开发过程中,我们经常需要动态给对象添加属性和值。Vue提供了内置方法Vue.set和this.$set来实现对象属性的动态添加。 2. 使用Vue.set Vue提供了Vue.set方法来实现给对象动态添加属性和值,其语法如下: Vue.set(object, ke…

    Vue 2023年5月28日
    00
  • vue自定义指令实现方法详解

    你要了解关于“vue自定义指令实现方法”的详细攻略,下面为你详细讲解。 什么是Vue自定义指令? 在Vue中,自定义指令是一种用来扩展标准的HTML指令的一种方式。除了内置的$v-cloak指令,Vue还允许注册自定义指令,使开发者可以在模板中直接使用自定义的指令。 Vue自定义指令的注册 定义一个全局自定义指令的方式: Vue.directive(‘my-…

    Vue 2023年5月27日
    00
  • vue 使用el-table循环轮播数据列表的实现

    下面是详细讲解“vue 使用el-table循环轮播数据列表的实现”的完整攻略。 Vue中使用El-table渲染数据 在Vue中,可以使用Element UI提供的表格组件el-table来渲染数据列表。el-table非常适用于多种不同的场景,包括但不限于数据展示、数据分页、搜索等等,而且具有非常丰富的功能和定制化选项。 要使用el-table渲染数据列…

    Vue 2023年5月29日
    00
  • vue实现前端列表多条件筛选

    下面是“vue实现前端列表多条件筛选”的完整攻略: 准备工作 首先需要引入Vue.js和element-ui组件库。除此之外,还需要一个数据列表和一个查询条件对象。 实现步骤 1. 查询条件的展示 使用element-ui组件库提供的Form组件渲染查询表单。每个查询条件使用FormItem包装,FormItem的label属性即为查询条件的名称,Prop属…

    Vue 2023年5月28日
    00
  • vue3与elementui封装一个便捷Loading

    针对您的问题,我将为您详细讲解如何在Vue3项目中结合ElementUI进行Loading样式封装。 首先,我们需要明确Vue3与ElementUI的相关依赖。在创建Vue3项目的时候,我们需要安装Vue3及其相关依赖: npm install vue@next npm install @vue/cli@next -g 而ElementUI的安装则需要使用以…

    Vue 2023年5月27日
    00
  • springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)

    下面是“springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)”的详细攻略: 步骤一:搭建Spring Boot项目 首先,需要用Spring Initializr创建一个Spring Boot项目。在选择依赖时,我们需要选择Web和Thymeleaf等依赖,具体的依赖如下: <dependency> <groupId…

    Vue 2023年5月28日
    00
  • 从零实现一个vue文件解析器

    下面我将详细讲解从零实现一个Vue文件解析器的完整攻略。Vue文件是一种用于Vue.js框架的组件定义文件,其中包含Vue组件的所有相关信息,例如template、script和style等标签。 Vue文件解析器的实现过程主要包括以下几个步骤: 解析Vue文件内容,提取template、script和style标签的内容; 将提取出来的template、s…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部