当前位置:首页 > VUE

vue表格组件实现

2026-01-15 05:32:50VUE

Vue表格组件实现

基础表格实现

使用el-table组件实现基础表格功能。安装Element UI后,引入el-tableel-table-column组件。

<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="date" label="日期" width="180"></el-table-column>
    <el-table-column prop="name" label="姓名" width="180"></el-table-column>
    <el-table-column prop="address" label="地址"></el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          date: '2023-01-01',
          name: '张三',
          address: '北京市'
        },
        {
          date: '2023-01-02',
          name: '李四',
          address: '上海市'
        }
      ]
    }
  }
}
</script>

表格排序功能

通过设置sortable属性实现单列排序,使用sort-method自定义排序逻辑。

vue表格组件实现

<el-table :data="tableData" style="width: 100%">
  <el-table-column prop="date" label="日期" sortable width="180"></el-table-column>
  <el-table-column prop="name" label="姓名" sortable width="180"></el-table-column>
  <el-table-column prop="address" label="地址" :sort-method="customSort"></el-table-column>
</el-table>

<script>
methods: {
  customSort(a, b) {
    return a.address.length - b.address.length
  }
}
</script>

表格分页功能

结合el-pagination组件实现分页功能,通过current-pagepage-size控制分页。

<el-table :data="currentTableData" style="width: 100%">
  <!-- 表格列定义 -->
</el-table>
<el-pagination
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange"
  :current-page="currentPage"
  :page-sizes="[10, 20, 50]"
  :page-size="pageSize"
  layout="total, sizes, prev, pager, next, jumper"
  :total="total">
</el-pagination>

<script>
data() {
  return {
    currentPage: 1,
    pageSize: 10,
    total: 100,
    allTableData: [],
    currentTableData: []
  }
},
methods: {
  handleSizeChange(val) {
    this.pageSize = val
    this.updateCurrentData()
  },
  handleCurrentChange(val) {
    this.currentPage = val
    this.updateCurrentData()
  },
  updateCurrentData() {
    const start = (this.currentPage - 1) * this.pageSize
    const end = start + this.pageSize
    this.currentTableData = this.allTableData.slice(start, end)
  }
}
</script>

表格筛选功能

使用filter-method实现自定义筛选逻辑,结合filters属性定义筛选条件。

vue表格组件实现

<el-table-column
  prop="status"
  label="状态"
  :filters="[
    { text: '成功', value: 'success' },
    { text: '失败', value: 'fail' }
  ]"
  :filter-method="filterStatus">
</el-table-column>

<script>
methods: {
  filterStatus(value, row) {
    return row.status === value
  }
}
</script>

表格编辑功能

通过作用域插槽实现行内编辑功能,结合v-model绑定编辑数据。

<el-table-column label="操作">
  <template #default="scope">
    <el-button @click="handleEdit(scope.row)">编辑</el-button>
  </template>
</el-table-column>

<script>
methods: {
  handleEdit(row) {
    this.$prompt('请输入新值', '提示', {
      inputValue: row.name
    }).then(({ value }) => {
      row.name = value
    })
  }
}
</script>

响应式表格设计

使用计算属性实现响应式表格数据,根据屏幕尺寸调整显示列。

<el-table :data="tableData" :default-sort="{prop: 'date', order: 'descending'}">
  <el-table-column v-if="!isMobile" prop="date" label="日期"></el-table-column>
  <el-table-column prop="name" label="姓名"></el-table-column>
  <el-table-column prop="address" label="地址"></el-table-column>
</el-table>

<script>
computed: {
  isMobile() {
    return window.innerWidth < 768
  }
}
</script>

标签: 组件表格
分享给朋友:

相关文章

在vue实现学生表格

在vue实现学生表格

实现学生表格的基本结构 在Vue中实现学生表格需要使用<table>标签结合Vue的数据绑定功能。准备一个数组存储学生数据,通过v-for指令动态渲染表格行。 <template&…

vue实现拖拽实现组件嵌套

vue实现拖拽实现组件嵌套

实现拖拽组件嵌套的核心思路 Vue中实现拖拽组件嵌套需要结合拖拽库(如vuedraggable)和组件递归渲染。核心在于动态管理嵌套数据结构,并通过事件传递实现层级更新。 安装必要依赖 推荐使用vu…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或回…

vue实现分组表格

vue实现分组表格

Vue 实现分组表格的方法 使用 v-for 嵌套循环实现分组 通过嵌套的 v-for 循环可以轻松实现分组表格。外层循环遍历分组数据,内层循环遍历每组中的具体项。 <template>…

vue实现父子组件

vue实现父子组件

Vue 父子组件通信实现方式 1. 父组件向子组件传递数据(Props) 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 父组件模板: <template>…

vue实现弹窗组件

vue实现弹窗组件

实现弹窗组件的基本结构 在Vue中创建一个弹窗组件通常需要三个核心部分:组件模板、样式和逻辑控制。弹窗组件应具备打开、关闭功能,并支持内容插槽或属性传入。 <template> &l…