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

yizhihongxing

下面是关于使用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中watch监听器的触发时机(watch的坑及解决)

    是的,Vue中的watch监听器在开发过程中经常用到,它可以监听指定的数据对象的变化,并在变化时触发相应的回调函数进行处理。但是由于Vue是响应式框架,watch监听器的触发时机会受到一些意外的影响,从而导致一些坑。本文将结合示例说明Vue中watch监听器的使用和坑及解决办法。 监听对象 Vue中可以使用$watch方法监听对象的属性变化,例如下面这个示例…

    Vue 2023年5月29日
    00
  • vue日历组件的封装方法

    下面我会详细讲解“Vue日历组件的封装方法”的完整攻略。 1. 选择正确的依赖项 在Vue项目中,我们可以使用已有的第三方插件来创建日历组件,这些插件通常提供了日历的样式和功能。下面是几个值得推荐的Vue日历组件:- vue-fullcalendar- v-calendar- vue-simple-calendar 对于仅仅需要显示日历的场景,这些插件已经足…

    Vue 2023年5月29日
    00
  • Vue中通过Vue.extend动态创建实例的方法

    让我来为您讲解一下在Vue中通过Vue.extend动态创建实例的方法。 Vue.extend方法 Vue.extend方法是Vue的一个全局API,用于创建一个Vue组件构造器,并返回该构造器。通过Vue.extend方法创建的组件构造器可以像普通的Vue组件一样进行注册、传值、生命周期等操作。 创建Vue组件构造器 首先我们需要通过Vue.extend方…

    Vue 2023年5月28日
    00
  • 详解如何制作并发布一个vue的组件的npm包

    制作并发布一个 Vue 的组件 npm 包,流程大致如下: 初始化项目并创建组件 编写组件原型并打包 发布 npm 包 下面将详细解释这些步骤。 初始化项目并创建组件 将组件发布到 npm 前,首先需要初始化本地项目,并创建一个 Vue 组件。我们可以使用 Vue CLI 工具来初始化项目,具体步骤如下: 安装 Vue CLI:npm install -g …

    Vue 2023年5月28日
    00
  • Vue实现附件上传功能

    如何使用Vue实现附件上传功能?下面是一个完整的攻略: 1. 安装依赖 在使用Vue实现附件上传功能之前,需要安装和配置相关依赖。 首先,在项目中安装axios这个库。axios是一个HTTP客户端,主要用于处理跨域请求和在浏览器和Node.js中发送HTTP请求。 在命令行中输入以下命令来安装axios: npm install axios 然后,在项目中…

    Vue 2023年5月28日
    00
  • Vue 中的compile操作方法

    Vue 中的 compile 操作方法可以将模板字符串编译为渲染函数,它是 Vue 模板编译的底层实现,是 Vue 的核心之一。 compile 方法的语法 compile 方法的语法如下: compile(template: string): { render: Function, staticRenderFns: Array<Function&gt…

    Vue 2023年5月27日
    00
  • Vue-cli项目获取本地json文件数据的实例

    下面是我给出的Vue-cli项目获取本地json文件数据的完整攻略: 1. 创建Vue-cli项目 首先我们要创建一个Vue-cli项目。具体的步骤可以参考Vue-cli官方文档。 2. 创建本地JSON文件 接下来我们需要创建本地JSON文件用于存储我们的数据。在项目目录下创建一个data目录,再在data目录下创建一个example.json文件,用来存…

    Vue 2023年5月28日
    00
  • 用vue设计一个数据采集器

    用vue设计一个数据采集器的完整攻略: 1. 确定需求: 首先我们要明确数据采集器的需求,主要包括要采集哪些数据、如何展示这些数据、如何进行数据的上传和保存等问题。 2. 设计界面: 接下来,我们需要设计数据采集器的界面,这里建议采用UI框架,如elementUI等,大大加快开发速度。 3. 构建组件: 按照需求和设计的界面,我们可以将整个数据采集器拆分成多…

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