vue实现input输入模糊查询的三种方式

当需要在页面的input输入框中输入内容,并根据输入的内容快速实现模糊查询时,可以使用Vue实现这一功能。下面将介绍三种方式来实现input输入模糊查询。

方式一:watch监听input输入,模糊查询

首先,在Vue组件中定义需要监听的变量(inputValue),并使用watch监听该变量的变化,一旦变化则执行查询操作。具体实现代码如下:

<template>
  <div>
    <input v-model="inputValue" />
    <ul>
      <li v-for="item in itemList">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: "",
      itemList: [{ name: "apple" }, { name: "banana" }, { name: "orange" }]
    };
  },
  watch: {
    inputValue: function(val) {
      this.itemList = this.itemList.filter(item =>
        item.name.toLowerCase().includes(val.toLowerCase())
      );
    }
  }
};
</script>

上面的代码中,首先用v-model绑定input输入框的值到inputValue变量上,然后使用watch监听该变量的变化,在其变化时将itemList数组中不满足模糊查询关键字的项移除。

方式二:computed计算属性模糊查询

在Vue的计算属性computed中进行模糊查询操作,当inputValue变量的值发生变化时,computed函数自动执行重新查询数据,并将查询结果绑定到itemList变量上。具体实现代码如下:

<template>
  <div>
    <input v-model="inputValue" />
    <ul>
      <li v-for="item in filteredItemList">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: "",
      itemList: [{ name: "apple" }, { name: "banana" }, { name: "orange" }]
    };
  },
  computed: {
    filteredItemList: function() {
      var keyword = this.inputValue.toLowerCase();
      return this.itemList.filter(function(item) {
        return item.name.toLowerCase().includes(keyword);
      });
    }
  }
};
</script>

在上面的代码中,computed的计算属性filteredItemList对itemList进行过滤,只显示匹配上输入框中输入的字符串的数组元素,从而实现了模糊查询的功能。

方式三:使用函数调用实现input输入模糊查询

在Vue的methods中定义方法实现模糊查询,每当input输入框的值发生变化时,执行查询方法,并将查询结果赋值给itemList数组。具体实现代码如下:

<template>
  <div>
    <input v-model="inputValue" @input="search" />
    <ul>
      <li v-for="item in itemList">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: "",
      itemList: [{ name: "apple" }, { name: "banana" }, { name: "orange" }]
    };
  },
  methods: {
    search: function() {
      var keyword = this.inputValue.toLowerCase();
      this.itemList = this.itemList.filter(function(item) {
        return item.name.toLowerCase().includes(keyword);
      });
    }
  }
};
</script>

上述代码,定义了一个名为search的方法,在input输入框的值发生变化的时候自动调用该方法,并将过滤后的结果赋值给itemList变量,实现了input输入框模糊查询的功能。

以上就是三种Vue实现input输入模糊查询的方式,可以根据自己的需要选择其中一种方式来实现,在应用开发中会经常用到。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现input输入模糊查询的三种方式 - Python技术站

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

相关文章

  • vue-cli脚手架build目录下utils.js工具配置文件详解

    接下来我将详细讲解 vue-cli 脚手架中 build 目录下的 utils.js 工具配置文件。 一、简介 utils.js 文件是 vue-cli 脚手架中 build 目录下的一个工具配置文件。该文件主要用于定义构建(build)过程中需要用到的各种工具函数。这些工具函数包含了一些实用的功能,例如:格式化输出字符串、合并路径、生成文件hash值等。 …

    Vue 2023年5月28日
    00
  • Vue开发之封装上传文件组件与用法示例

    Vue开发之封装上传文件组件与用法示例 一、概述 在Vue项目中,我们经常需要使用到上传文件的功能,为了提高代码的可复用性并减少冗余代码,我们可以封装一个通用的上传文件组件。本篇攻略将介绍如何封装上传文件组件以及如何在Vue项目中使用该组件。 二、上传文件组件的封装 创建 UploadFile.vue 组件文件,并添加如下代码: <template&g…

    Vue 2023年5月28日
    00
  • 浅析vue给不同环境配置不同打包命令

    为了给不同环境配置不同的打包命令,我们必须先对 Vue CLI 进行配置。下面是详细攻略: 步骤一:安装 Vue CLI 首先,我们需要安装 Vue CLI。可以使用以下命令进行全局安装: npm install -g @vue/cli 安装完成之后,你可以使用以下命令检查是否安装成功: vue –version 如果看到类似以下输出,说明安装成功: @v…

    Vue 2023年5月28日
    00
  • js中getter和setter用法实例分析

    当我们需要在 JavaScript 中对一个对象的某个属性进行访问控制时,可以使用 getter 和 setter 方法。getter 方法用于获取属性的值,setter 方法用于设置属性的值。本文将详细介绍如何使用 getter 和 setter 方法。 语法 var obj = { get 属性名() { // 代码块 }, set 属性名(value)…

    Vue 2023年5月28日
    00
  • Vue2.x 项目性能优化之代码优化的实现

    为了优化Vue2.x项目的性能,代码优化是非常重要的一部分。下面是一些可以实现的代码优化技巧: 1. 使用Vue的异步组件 Vue的异步组件用于延迟加载组件,避免不必要的资源浪费。异步组件可以通过Vue.component或Vue.extend创建。 以下代码展示了如何在Vue中使用异步组件: // 普通组件 import NormalComp from ‘…

    Vue 2023年5月28日
    00
  • Vue3实战学习配置使用vue router路由步骤示例

    下面我将为你详细讲解“Vue3实战学习配置使用vue router路由步骤示例”的完整攻略,包含以下几个方面的内容: 理解Vue Router 安装和配置Vue Router 路由配置选项解析 示例说明 1. 理解Vue Router Vue Router是Vue.js官方的路由管理器,它和Vue.js框架深度集成,可以非常便捷地实现单页面应用(SPA)的路…

    Vue 2023年5月28日
    00
  • 分享Vue组件传值的几种常用方式(二)

    请听我详细讲解“分享Vue组件传值的几种常用方式(二)”的完整攻略。 一、前言 在Vue组件传值的开发过程中,我们通常会遇到如下问题:如何在不同的组件之间传递数据?如何在父子组件之间通信?如何在没有父子关系的组件之间传递数据?这些问题都可以通过不同的方式来解决。在上一篇文章中,我们分享了“prop与$emit”这种传值方式。而今天,我们来分享“provide…

    Vue 2023年5月27日
    00
  • vue中的Object.freeze() 优化数据方式

    当我们在使用Vue.js时,我们会遇到需要对某个对象进行深度冻结的情况。这时,Vue提供了一个Object.freeze()方法来实现深度冻结。该方法可以冻结一个对象的所有属性,包括嵌套对象和数组中的属性。这种方式可以有效避免用户误操作导致数据变化,从而优化数据的稳定性和可靠性。 下面我们通过以下两个示例来具体说明如何使用Object.freeze()方法:…

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