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使用CDN引用项目组件,减少项目体积的步骤

    Vue使用CDN引用项目组件,可以减少项目体积,提高页面加载速度。下面是完整的攻略: 步骤一:引入Vue.js文件 首先,我们需要在HTML文件中引入Vue.js文件。可以从UNPKG或者cdnjs获取CDN链接。 下面是一个例子,使用了UNPKG的Vue.js文件链接: <!DOCTYPE html> <html lang="e…

    Vue 2023年5月28日
    00
  • Vue 服务端渲染SSR示例详解

    下面是“Vue 服务端渲染SSR示例详解”的完整攻略。 Vue 服务端渲染SSR示例详解 什么是Vue 服务端渲染 在Web中,常用的前端框架可以分为两类:传统的客户端渲染(CSR)框架和服务端渲染(SSR)框架。传统的CSR框架(如Vue.js、React等)是指通过JavaScript动态地处理DOM元素的方式来渲染页面。而SSR框架是指在服务器端生成H…

    Vue 2023年5月28日
    00
  • 如何用webpack4带你实现一个vue的打包的项目

    下面是如何用webpack4带你实现一个vue的打包的项目的完整攻略。 一、安装和配置webpack 首先安装webpack和webpack-cli依赖: npm install webpack webpack-cli –save-dev 然后在项目根目录下创建webpack.config.js文件,并写入如下配置: module.exports = { …

    Vue 2023年5月28日
    00
  • 如何在vue中使用pdfjs预览pdf文件

    下面是“如何在Vue中使用pdf.js预览pdf文件”的完整攻略。 安装pdf.js 首先,我们需要安装pdf.js。可以通过以下命令来安装: npm install pdfjs-dist 使用pdf.js渲染pdf文件 在Vue组件中引入pdf.js和样式文件: import pdfjsLib from ‘pdfjs-dist’; import ‘pdfj…

    Vue 2023年5月28日
    00
  • JS 设计模式之:单例模式定义与实现方法浅析

    下面是一份详细的攻略。 JS 设计模式之单例模式定义与实现方法浅析 单例模式介绍 单例模式是一种设计模式,它确保类只有一个实例,并提供全局访问点。 在 JavaScript 中,单例模式通常用于管理全局状态或处理复杂的应用程序配置。 实现单例模式的方式 1. 简单的单例模式 简单的单例模式是指只创建一个对象,复用这个对象。 其中最简单的实现方法就是使用一个全…

    Vue 2023年5月28日
    00
  • Vue中的nextTick方法详解

    下面是Vue中的nextTick方法详解的完整攻略。 什么是nextTick方法 nextTick方法是Vue提供的一个异步操作工具,它可以让我们在DOM更新之后执行一些操作。它的作用是在下次DOM更新循环结束之后执行延迟回调,用于获得更新后的DOM。因此,使用nextTick方法可以让我们更加方便地操作更新后的DOM。 nextTick方法的基本应用 在V…

    Vue 2023年5月28日
    00
  • 解决ElementUI中tooltip出现无法显示的问题

    解决ElementUI中tooltip出现无法显示的问题 问题现象 在使用ElementUI的tooltip时,经常会出现tooltip无法显示的情况。鼠标悬停在元素上,但是tooltip并没有弹出来。这种问题通常是由于tooltip所依附的元素没有绑定事件导致的。 解决方法 方法一:使用v-tooltip指令 在使用ElementUI的tooltip时,我…

    Vue 2023年5月28日
    00
  • vue与django(drf)实现文件上传下载功能全过程

    下面我将介绍通过Vue和Django(DRF)实现文件上传下载功能的全过程,包含以下几个步骤: 在Vue中创建文件上传表单并发送请求到Django后端; 在Django后端接收文件并保存到指定目录; 编写Django视图函数实现文件下载功能; 在Vue中调用视图函数完成文件下载。 1. 创建Vue文件上传表单并发送请求到Django后端 我们可以使用 axi…

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