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日

相关文章

  • JSP上传图片产生 java.io.IOException: Stream closed异常解决方法

    问题描述: 在使用 JSP 实现文件上传功能时,有时会出现 java.io.IOException: Stream closed 异常,这是因为在使用表单上传文件时,文件流对象在上传完之后必须要关闭,若流被关闭后仍然继续写入文件流会发生流关闭异常。 解决方案: 将文件流转换为字节数组并缓存 在上传大型文件时,为了避免 OutOfMemoryError 异常,…

    Vue 2023年5月28日
    00
  • vue中对时间戳的处理方式

    在Vue中,我们通常使用Date对象来处理时间和日期。而时间戳就是自1970年1月1日起的毫秒数值,是Date对象的一种表达方式。在Vue中,我们可以用过滤器、方法或计算属性的方式来处理时间戳。 使用过滤器来处理时间戳 我们可以通过定义一个过滤器,将时间戳转换成我们所需要的日期格式。 <p>{{ timestamp | formatDate }}…

    Vue 2023年5月28日
    00
  • 详解Vue的组件注册

    下面我将详细讲解“详解Vue的组件注册”的完整攻略,包括组件的注册和使用。 什么是组件注册 在Vue中,组件就是可以重复使用的模块化代码块。组件注册就是将组件注册到Vue实例中,以便在实例中使用。 组件注册的方式 Vue中有两种注册组件的方式:全局注册和局部注册。 全局注册 全局注册是将组件注册到Vue实例中的方式,可以在任何Vue实例中使用该组件。 全局注…

    Vue 2023年5月27日
    00
  • Vue 3.0 前瞻Vue Function API新特性体验

    以下是关于“Vue 3.0 前瞻Vue Function API新特性体验”的详细攻略。 什么是Vue Function API? Vue Function API是指在Vue.js 3.0中引入的一组全新的API,它们的设计目标是更好地解决组件库编写过程中出现的一些问题,如代码的可维护性、组件之间的通信以及更好的类型支持等。Vue Function API…

    Vue 2023年5月28日
    00
  • vue 实现在函数中触发路由跳转的示例

    当我们在使用 Vue.js 开发 SPA(单页应用)时,使用路由跳转是必不可少的功能。在函数中触发路由跳转,可以让我们更加灵活地控制页面跳转,满足我们的设计需求。下面是实现这一功能的完整攻略: 创建 Vue 项目并安装所需依赖 我们首先需要创建一个 Vue 项目并在其中安装所需的依赖。可以使用 Vue CLI 快速创建一个项目,然后在项目根目录下运行以下命令…

    Vue 2023年5月28日
    00
  • vue5中的事件修饰符(style)和template

    Vue 5是一种流行的前端框架,其中事件修饰符和模板是其核心概念之一。 事件修饰符(style) 事件修饰符(style)用于为事件绑定额外的行为,比如阻止默认行为或者停止事件传播。它们可以在事件绑定后紧跟着一个点号,并且具有特定的语法。常用的事件修饰符有以下几种: .stop: 阻止事件冒泡 .prevent: 阻止默认事件 .capture: 添加事件侦…

    Vue 2023年5月27日
    00
  • vue-element-admin项目导入和导出的实现

    下面我将详细讲解 “vue-element-admin项目导入和导出的实现” 的完整攻略,包括具体的过程和示例说明。 1. 导出实现 1.1 安装引入文件 首先,在项目中引入 FileSaver.js 和 XLSX.js 两个文件,它们分别用于文件保存和 Excel 文件处理。 在终端中输入以下命令: npm install file-saver xlsx …

    Vue 2023年5月27日
    00
  • Vue项目导入导出文件功能以及导出文件后乱码问题及解决

    下面是Vue项目导入导出文件功能以及乱码问题及解决的完整攻略。 1. Vue项目导入导出文件功能的实现思路 在Vue项目中,我们可以使用FileSaver.js 实现文件的导出。而文件的导入则需要使用HTML5 File API。具体实现思路如下: 首先确保引入了FileSaver.js库,可以使用npm包管理器进行安装: bashnpm install f…

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