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 slot封装公共组件

    下面我将详细讲解如何使用vue slot封装公共组件: 什么是Vue Slot? Vue Slot是Vue.js中一种非常流行且实用的特性,它允许我们将一个组件的内容插入到特定的插槽位置上。通过使用Vue Slot,我们可以轻松地封装一个可以扩展的、高度可定制的公共组件。 创建可复用的Vue组件 在使用Vue Slot封装公共组件之前,我们需要创建一个可复用…

    Vue 2023年5月28日
    00
  • Vue生命周期详解

    Vue生命周期详解 Vue.js 是一个 MVVM 框架,在组件渲染过程中,每个组件都有自己的生命周期。这里将详细介绍 Vue 组件的生命周期函数。 Vue 组件生命周期可以分为四个阶段: 创建阶段 create 挂载阶段 mount 更新阶段 update 销毁阶段 destroy 创建阶段 create 在创建阶段,Vue 组件将从组件配置对象的初始化属…

    Vue 2023年5月28日
    00
  • 解决vuejs 使用value in list 循环遍历数组出现警告的问题

    首先,我们需要了解这个警告的产生原因。在 Vue.js 中,当在组件中使用 v-for 循环遍历数组时,我们需要为每一个被遍历的元素指定一个唯一的 key 值,这样才能保证 DOM 元素更新时的高效性。 然而,在使用 v-model 绑定数据时,我们通常会使用 value 属性来表示选项的值,例如: <input type="checkbox…

    Vue 2023年5月29日
    00
  • VUE render函数使用和详解

    VUE render函数使用和详解 什么是render函数? Vue.js 是一个数据驱动的 web 框架。其核心思想是将页面上的 DOM 和数据绑定在一起,当数据变化时,就会自动更新 DOM 以保证页面内容的及时更新。 Vue.js 默认使用 template 语法来声明页面结构,但是在某些情况下,我们可能需要手动渲染页面结构。这个时候,就需要用到 Vue…

    Vue 2023年5月27日
    00
  • Vue自定义指令详解

    Vue自定义指令详解 基本概念 Vue自定义指令是Vue.js提供的一种扩展语法,用于自定义DOM操作行为。 自定义指令通过v-前缀来定义,并且可以带有参数和修饰符两个部分。 注册自定义指令 // 全局注册 Vue.directive(‘my-directive’, { // 自定义指令的钩子函数 bind: function (el, binding, v…

    Vue 2023年5月27日
    00
  • Vue配置文件vue.config.js配置前端代理方式

    当我们在开发Vue项目时,有时候需要通过前端代理方式来解决跨域的问题。在Vue项目中实现前端代理的方式有很多种,本文将详细介绍如何通过配置Vue的配置文件vue.config.js实现前端代理方式。 vue.config.js文件 vue.config.js是一个可选的配置文件,如果项目的根目录中存在该文件,则该文件会被@vue/cli-service自动加…

    Vue 2023年5月28日
    00
  • Vue全局事件总线你了解吗

    当进行 Vue 项目开发时,有时需要在组件之间进行通信,常见的方式有props、自定义事件、Vuex等。除了这些方式,还可以使用Vue的全局事件总线来实现组件之间的通信。 什么是Vue全局事件总线? Vue全局事件总线是通过Vue实例来实现的全局事件总线。Vue实例是一个事件代理,它中转和分发事件通知,从而实现各组件之间的通信。它的实现是通过创建一个Vue实…

    Vue 2023年5月29日
    00
  • vsCode中vue文件无法提示html标签的操作方法

    针对vsCode中vue文件无法提示html标签的情况,可以按照以下步骤进行操作: 安装Vetur插件 Vetur是一款vsCode的插件,主要提供语法高亮、格式化、代码片段和错误提示等功能,适用于Vue.js开发。因此,在使用vsCode编辑Vue文件时,我们需要安装并启用Vetur插件,这样就能够解决无法提示html标签的问题。 具体操作如下: 在vsC…

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