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

yizhihongxing

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日

相关文章

  • vue3中的watch()的用法和具体作用

    下面就为你详细讲解一下“vue3中的watch()的用法和具体作用”,具体内容如下: watch()的介绍 watch()是Vue.js中一个非常重要的API,它可以用来观察数据的变化并做出相应的响应。在Vue 3中,watch()的具体用法与Vue 2相比有所变化,它更加简单、灵活和易于理解,让我们从下面的两个示例中来看看它的具体用法和作用。 示例1 假设…

    Vue 2023年5月28日
    00
  • vue的for循环使用方法

    下面是关于Vue的for循环使用方法的详细攻略。 一、Vue的for循环介绍 Vue中的for循环指令叫做v-for,它可以遍历一个数组或一个对象并为每个成员渲染出对应的元素。采用v-for指令可以用于对每个数组和对象进行迭代,并将每个元素渲染到页面中。在渲染每个元素时,我们可以对它们分别进行修改和操作,实现前端页面的数据动态呈现效果。 二、Vue的for循…

    Vue 2023年5月28日
    00
  • v-html渲染组件问题

    简介: 在Vue.js开发中,v-html指令可以让我们插入HTML代码,有时我们会遇到将一个组件作为HTML输入到v-html指令中的需求。但是这样做存在一些问题,比如组件不会被实例化,无法正常响应数据等。下面是具体的解决方法。 步骤: 1.理解v-html的作用 v-html指令用来动态的输出已经被渲染成 HTML 的字符串,而不是DOM元素。可以将一个…

    Vue 2023年5月28日
    00
  • node+vue实现文件上传功能

    下面我将为您详细讲解“node+vue实现文件上传功能”的完整攻略。 技术实现方案 实现文件上传功能需要前后端协同完成,一般采用以下技术方案: 前端:Vue + element-ui 后端:Node.js + Express 存储:阿里云 OSS 或者本地文件系统 前端实现 准备工作 1.在项目中引入 element-ui 和 axios npm insta…

    Vue 2023年5月28日
    00
  • java实现微信公众平台发送模板消息的示例代码

    下面我为您详细讲解如何使用Java实现微信公众平台发送模板消息的示例代码。这里演示的是使用第三方开源工具Weixin-java-tools来实现。 首先,我们需要创建微信公众平台账号,并在账号中创建模板消息。具体创建过程可以参考微信公众平台的相关文档。创建完毕后,我们需要获取到模板消息的模板ID和需要替换的关键字。 接下来就可以开始使用Weixin-java…

    Vue 2023年5月28日
    00
  • 使用VueCli3+TypeScript+Vuex一步步构建todoList的方法

    使用VueCli3+TypeScript+Vuex一步步构建todoList 本文将带领大家了解使用VueCli3+TypeScript+Vuex来构建一个简单的todoList。 初始化项目 首先,在命令行中使用以下命令初始化项目: vue create todoList 在安装过程中,可以选择Manually select features来手动选择需要…

    Vue 2023年5月27日
    00
  • vue的组件通讯方法总结大全

    我来为你详细讲解一下“Vue的组件通讯方法总结大全”的完整攻略。 1. 组件通讯方法概述 在Vue的组件化开发中,组件之间的通讯是必不可少的。Vue提供了多种组件通讯方法,包括: 父子组件通讯:父组件通过props向子组件传递数据,子组件通过emit触发事件向父组件传递数据。 兄弟组件通讯:通过一个共同的父组件来实现兄弟组件通讯,即父组件先接收兄弟组件的数据…

    Vue 2023年5月27日
    00
  • Vue中通过minio上传文件的详细步骤

    下面是Vue中通过Minio上传文件的详细步骤: 1. 安装minio-js 首先,需要安装minio-js,可以使用npm进行安装: npm install minio-js 2. 创建minio实例 在Vue组件中引入minio-js,并创建minio实例,示例代码如下: import Minio from ‘minio-js’ const minioC…

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