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

yizhihongxing

当需要在页面的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日

相关文章

  • Ant Design Vue日期组件的时间限制方式

    Ant Design Vue 是 Ant Design 在 Vue 中的实现,是一套基于 Vue 实现的高质量 UI 组件库,拥有丰富的组件和良好的设计风格,深受前端工程师的喜爱。 Ant Design Vue 提供了日期组件,我们可以通过设置时间限制方式来限定用户选择日期的范围,例如限制用户只能选择今天及今天之后的日期,或者只能选择本月份的日期等等。 下面…

    Vue 2023年5月29日
    00
  • Vue中Vue.extend()的使用及解析

    下面我将详细介绍Vue中Vue.extend()的使用及解析的完整攻略。 1. Vue.extend()的作用 在Vue中,我们经常需要生成一个组件,并将其作为另一个组件的子组件来使用。Vue.extend()方法就是为了方便我们定义和注册组件而存在的。 它的作用是基于Vue构造函数,创建一个“子类”,即一个可以被Vue组件系统识别的组件构造函数。通过ext…

    Vue 2023年5月28日
    00
  • 浅谈vue路径优化之resolve

    让我来详细讲解一下“浅谈 Vue 路径优化之 resolve”的完整攻略。 什么是 resolve 在 Vue 项目中,我们经常需要使用相对路径来引入模块或组件。这样做会导致代码可读性变差、代码维护性降低。因此,我们需要一种更好的解决方案,它就是 resolve。 resolve 是 webpack 中的一个处理模块路径的插件,可以帮助我们快速定位到目标文件…

    Vue 2023年5月27日
    00
  • 解决layui上传文件提示上传异常,实际文件已经上传成功的问题

    针对“解决layui上传文件提示上传异常,实际文件已经上传成功但无法正常显示”的问题,我将提供以下完整的攻略: 1. 确认上传路径是否正确 首先,确保在LayUI的上传组件中设置了正确的上传路径。当上传文件成功,但无法正常显示时,很可能是由于文件上传到错误的路径或者没有设置正确的路径所导致的。 例如,以下是上传组件的代码: layui.use(‘upload…

    Vue 2023年5月28日
    00
  • Vue3 中的 readonly 特性及函数使用详解

    Vue3 中的 readonly 特性及函数使用详解 在 Vue3 中,readonly 是一个非常有用的特性,它可以将一个对象或数组变成只读的,防止被修改,以保证应用程序的稳定性。 什么是 readonly 特性? readonly 特性可以在定义一个对象或数组时,将其设置为只读状态,使其不被修改。使用 readonly 的优势在于避免了应用程序中的错误或…

    Vue 2023年5月28日
    00
  • 理解Proxy及使用Proxy实现vue数据双向绑定操作

    理解 Proxy 在 JavaScript 中,对象是一种引用类型,对象的属性只是指向变量的一个指针。因为这个特性,我们可以获得代理模式的能力:在对象创建之后,可以创建一个代理来控制对象的访问或操作。 Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。这样,我们可以在读取或修改对象属性时插入其他逻辑,例如数据绑定。 在使用 …

    Vue 2023年5月28日
    00
  • vue实现列表倒计时

    想要实现列表倒计时,可以使用Vue框架中的定时器方法和计算属性来实现。具体实现的过程如下: 步骤一:在App.vue文件中创建数据 <template> <div> <ul> <li v-for="(item, index) in items" :key="index">…

    Vue 2023年5月29日
    00
  • 浅谈vue项目,访问路径#号的问题

    对于“浅谈vue项目,访问路径#号的问题”,我将提供如下完整攻略: 1. 了解Hash模式路由 在讲解浅谈vue项目,访问路径#号的问题之前,首先需要了解Hash模式路由。所谓Hash模式,就是指Url中的锚点(#),它跟在URL后面的字符串。在使用Vue开发单页面应用时,Hash模式路由就是常用的路由模式。比如 VueRouter 就是这样的。 2. Vu…

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