vue input输入框关键字筛选检索列表数据展示

Vue是一款流行的前端框架,其快速响应、简单易用的特性使其备受欢迎。在Vue的应用开发中,与用户输入相关的功能是最为常见的需求之一。其中,要实现输入框关键字筛选检索列表数据展示,可以按照以下步骤:

第一步:构建基础页面

首先,需要构建一个基础的页面,包含搜索框和列表。可使用Vue的单文件组件来进行构建,假设为Search.vue组件,其中包含如下HTML代码:

<template>
  <div>
    <input v-model="keyword" />
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

其中,搜索框用v-model绑定keyword变量,可实时获取用户输入的内容,列表使用v-for指令进行循环渲染。

第二步:初始化数据

接下来,需要初始化数据,例如从后端接口获取数据。在Search.vue组件中,可以使用created生命周期钩子来获取并初始化数据。示例代码如下:

<script>
export default {
  data() {
    return {
      keyword: '',
      items: [],
      originalItems: [],
    };
  },
  created() {
    //模拟从后端获取数据
    this.items = [
      { name: '苹果' },
      { name: '香蕉' },
      { name: '橘子' },
      { name: '柚子' },
      { name: '荔枝' },
    ];
    this.originalItems = [...this.items];
  },
};
</script>

其中,使用data函数定义keyword、items、originalItems三个变量,并在created生命周期钩子中模拟从后端获取数据并初始化,同时使用拷贝方式备份数据。这里备份数据是为了便于后面实现筛选功能时,不改变原有数据。

第三步:实现筛选功能

实现筛选功能的关键在于,当用户在搜索框中输入关键字时,需要动态显示相关的列表项。需要对keyword变量进行监听,当keyword发生变化时,筛选items中符合条件的列表项并重新渲染。示例代码如下:

<script>
export default {
  data() {
    return {
      keyword: '',
      items: [],
      originalItems: [],
    };
  },
  created() {
    //模拟从后端获取数据
    this.items = [
      { name: '苹果' },
      { name: '香蕉' },
      { name: '橘子' },
      { name: '柚子' },
      { name: '荔枝' },
    ];
    this.originalItems = [...this.items];
  },
  watch: {
    keyword(val) {
      this.items = this.originalItems.filter((item) =>
        item.name.includes(val)
      );
    },
  },
};
</script>

其中,使用watch监听keyword变量的变化,当keyword发生变化时,使用Array的filter方法对originalItems数据进行筛选,保留包含关键字的列表项,并重新赋值给items进行渲染。

示例一:基础案例

现在可以通过Search.vue组件来实现输入框关键字筛选检索列表数据展示的功能,具体效果可以参考以下代码:

<template>
  <div>
    <input v-model="keyword" />
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      items: [],
      originalItems: [],
    };
  },
  created() {
    //模拟从后端获取数据
    this.items = [
      { name: '苹果' },
      { name: '香蕉' },
      { name: '橘子' },
      { name: '柚子' },
      { name: '荔枝' },
    ];
    this.originalItems = [...this.items];
  },
  watch: {
    keyword(val) {
      this.items = this.originalItems.filter((item) =>
        item.name.includes(val)
      );
    },
  },
};
</script>

示例二:增加异步获取数据

除了从模拟数据获取,一般应用中数据都需要从后端获取。下面是有异步获取数据的实例,由于实际url可能因为私密等原因无法呈现,请读者自行修改代码:

<template>
  <div>
    <input v-model="keyword" />
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      keyword: '',
      items: [],
      originalItems: [],
    };
  },
  created() {
    this.fetchData();
  },
  watch: {
    keyword(val) {
      this.items = this.originalItems.filter((item) =>
        item.name.includes(val)
      );
    },
  },
  methods: {
    fetchData() {
      axios
        .get('https://youapi.com/items')
        .then((response) => {
          this.items = response.data;
          this.originalItems = [...response.data];
        })
        .catch((error) => {
          console.log(error);
        });
    },
  },
};
</script>

注意,需要先安装axios,在vue.config.js导入axios即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue input输入框关键字筛选检索列表数据展示 - Python技术站

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

相关文章

  • vue源码解析computed多次访问会有死循环原理

    下面是关于“vue源码解析computed多次访问会有死循环原理”的完整攻略。 1. computed的原理 先来简单介绍一下computed的原理。在Vue组件中,computed是指计算属性,是一个基于响应式依赖进行缓存的数据属性,它的值在使用时会自动收集依赖,发现依赖变化时会重新计算,并且将结果缓存起来,直到依赖变化才重新计算。这样就避免了重复计算,提…

    Vue 2023年5月28日
    00
  • Vue事件的基本操作你知道吗

    当我们使用Vue构建应用程序时,事件处理是至关重要的一部分。Vue提供了许多内置的指令和事件,可以让我们轻松地处理用户操作并响应状态变化。在本篇攻略中,我们将深入探讨Vue中事件的基本操作,同时提供一些示例说明,帮助读者更好地理解。 Vue事件概述 在Vue中,我们可以使用v-on指令来监听DOM事件。该指令可以添加到任何可以触发事件的HTML元素上,例如按…

    Vue 2023年5月27日
    00
  • Vue实现模糊查询的简单方法实例

    下面是“Vue实现模糊查询的简单方法实例”的完整攻略,包括两条示例说明。 1. 概述 Vue可以方便地实现数据的绑定和渲染,而模糊查询是我们经常需要使用的一个功能,因此在Vue中实现模糊查询是非常实用的。本文将介绍两种实现Vue模糊查询的简单方法,分别是使用computed属性和使用自定义过滤器。 2. 使用computed属性 首先,我们在Vue实例中定义…

    Vue 2023年5月29日
    00
  • Vue.js用法详解

    Vue.js用法详解 简介 Vue.js是一款轻量级Javascript框架,其核心库只关注视图层(View)的渲染和交互,非常适合开发单页应用程序。Vue.js易学易用,且具有良好的灵活性和扩展性,因此备受前端开发者喜爱。 基本使用 以下是Vue.js的基本使用方法: 基本配置 在使用Vue.js前,需要引入Vue.js库: <script src=…

    Vue 2023年5月27日
    00
  • Vue Element前端应用开发之常规Element界面组件

    下面我将为你详细讲解Vue Element前端应用开发之常规Element界面组件的完整攻略。 什么是Element UI组件库? Element UI是一个基于Vue.js开发的组件库,具有丰富的UI组件和交互行为,适用于快速开发,提供了一组优雅、高效的基础组件,极大地减轻了开发人员的工作量。 安装Element UI 安装Element UI的方式有以下…

    Vue 2023年5月28日
    00
  • 浅析Vue 中的 render 函数

    下面我将为你详细讲解“浅析Vue 中的 render 函数”的完整攻略。 什么是 render 函数 在 Vue 中,模板是数据与 DOM 的映射,我们通过编写模板可以将数据渲染到页面上。但是,在一些场景下,如大规模的复杂组件或者需要高度自定义渲染逻辑的场景,使用传统的模板语法显得力不从心。这时候可以使用 Vue 的 render 函数,它不仅可以让我们更加…

    Vue 2023年5月27日
    00
  • 使用Vue-cli3.0创建的项目 如何发布npm包

    下面我将详细讲解使用Vue-cli3.0创建的项目如何发布npm包的完整攻略。 1. 创建Vue-cli3.0项目 使用Vue-cli3.0创建一个Vue项目,可以通过以下命令进行创建: vue create my-project 该命令会在当前目录下创建一个名为my-project的Vue项目。 2. 编写组件 在my-project项目中,使用Vue框架…

    Vue 2023年5月28日
    00
  • 前端实时通信的8种方式及其优缺点和实现方式

    前端实时通信的8种方式及其优缺点和实现方式 前端实时通信是目前前端开发中常见的需求之一,常用于在线聊天、游戏、协作、数据实时更新等场景中,下面将对前端实时通信的8种方式进行详细讲解。 方式一:Ajax轮询 优点 兼容性好,支持大部分浏览器。 能够实时获取后端数据。 缺点 客户端会不断向服务器发送请求,增大服务器压力。 不是真正意义上的实时通信。 实现方式 f…

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