当前位置:首页 > VUE

vue实现表格查询

2026-02-19 15:07:27VUE

Vue 实现表格查询功能

数据准备 在 Vue 组件中定义表格数据和查询条件绑定的变量:

data() {
  return {
    tableData: [], // 表格数据
    searchQuery: '', // 查询条件
    originalData: [] // 原始数据备份
  }
}

获取初始数据 在 mounted 钩子中获取初始数据并备份:

mounted() {
  this.fetchData();
},
methods: {
  fetchData() {
    // 模拟API请求
    this.tableData = [
      { id: 1, name: '张三', age: 25 },
      { id: 2, name: '李四', age: 30 },
      { id: 3, name: '王五', age: 28 }
    ];
    this.originalData = [...this.tableData];
  }
}

实现查询方法 添加过滤方法处理查询逻辑:

methods: {
  handleSearch() {
    if (!this.searchQuery) {
      this.tableData = [...this.originalData];
      return;
    }

    const query = this.searchQuery.toLowerCase();
    this.tableData = this.originalData.filter(item => {
      return Object.values(item).some(
        value => String(value).toLowerCase().includes(query)
      );
    });
  }
}

模板部分 在模板中添加搜索输入框和表格展示:

<template>
  <div>
    <input 
      v-model="searchQuery" 
      @input="handleSearch" 
      placeholder="输入查询内容"
    />

    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>姓名</th>
          <th>年龄</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in tableData" :key="item.id">
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

高级查询实现

多条件查询 扩展查询功能支持多字段精确匹配:

data() {
  return {
    searchParams: {
      name: '',
      age: ''
    }
  }
},
methods: {
  advancedSearch() {
    this.tableData = this.originalData.filter(item => {
      return (
        (this.searchParams.name === '' || 
         item.name.includes(this.searchParams.name)) &&
        (this.searchParams.age === '' || 
         item.age == this.searchParams.age)
      );
    });
  }
}

分页支持 添加分页功能:

data() {
  return {
    currentPage: 1,
    pageSize: 5
  }
},
computed: {
  paginatedData() {
    const start = (this.currentPage - 1) * this.pageSize;
    return this.tableData.slice(start, start + this.pageSize);
  },
  totalPages() {
    return Math.ceil(this.tableData.length / this.pageSize);
  }
}

性能优化

防抖处理 为搜索输入添加防抖:

import { debounce } from 'lodash';

methods: {
  handleSearch: debounce(function() {
    // 搜索逻辑
  }, 300)
}

虚拟滚动 大数据量时使用虚拟滚动:

<template>
  <RecycleScroller
    class="scroller"
    :items="tableData"
    :item-size="50"
    key-field="id"
  >
    <template v-slot="{ item }">
      <tr>
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
      </tr>
    </template>
  </RecycleScroller>
</template>

服务端查询

API集成 与后端API集成实现服务端查询:

methods: {
  async fetchServerData(params) {
    try {
      const res = await axios.get('/api/data', { params });
      this.tableData = res.data;
    } catch (error) {
      console.error(error);
    }
  }
}

vue实现表格查询

标签: 表格vue
分享给朋友:

相关文章

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{ 'b…

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的…