好的,我帮你系统整理一下 Element UI 的 Table 表格用法,包括基本用法、属性、插槽、事件、操作列、分页和高级用法。内容面向 Vue.js 开发者,便于快速上手和参考。
Element UI Table 表格全解析
1. 基本用法
<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: '2025-10-09', name: '张三', address: '北京市' },
{ date: '2025-10-10', name: '李四', address: '上海市' },
]
}
}
}
</script>
:data
:绑定表格数据,数组格式<el-table-column>
:定义每一列prop
:字段名,对应数据中的属性label
:列名width
:列宽
2. 属性常用配置
属性 | 说明 |
---|---|
border | 是否显示边框 |
stripe | 是否斑马纹表格 |
size | 表格尺寸,可选 medium / small / mini |
highlight-current-row | 是否高亮当前行 |
row-key | 行的唯一标识(优化性能,必须唯一) |
示例:
<el-table :data="tableData" border stripe highlight-current-row row-key="id" size="small">
3. 插槽自定义内容
可以使用 作用域插槽自定义列的渲染内容:
<el-table-column label="操作">
<template slot-scope="scope">
<el-button @click="editRow(scope.row)" type="primary" size="mini">编辑</el-button>
<el-button @click="deleteRow(scope.row)" type="danger" size="mini">删除</el-button>
</template>
</el-table-column>
slot-scope="scope"
中的scope.row
表示当前行数据scope.$index
表示当前行索引
4. 表头自定义
<el-table-column label="姓名">
<template slot="header">
<span style="color: red;">姓名</span>
</template>
</el-table-column>
- 使用
slot="header"
可以自定义表头内容,比如加图标或排序标记
5. 排序和筛选
排序
<el-table-column prop="age" label="年龄" sortable></el-table-column>
sortable
:可选true
/"custom"
"custom"
时,需要监听sort-change
事件自行处理排序逻辑
<el-table @sort-change="handleSortChange"></el-table>
筛选
<el-table-column prop="status" label="状态" :filters="[{text:'启用',value:'1'},{text:'禁用',value:'0'}]" filter-method="filterStatus" filter-placement="bottom-end">
filters
:筛选项数组filter-method
:自定义过滤函数
6. 多选和选择操作
<el-table-column type="selection" width="55"></el-table-column>
type="selection"
自动生成复选框列- 通过事件获取选中行:
<el-table @selection-change="handleSelectionChange">
7. 分页配合
<el-pagination
@current-change="handlePageChange"
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="total, prev, pager, next, jumper">
</el-pagination>
current-page
:当前页page-size
:每页条数total
:总条数layout
:分页布局
8. 高级功能
- 固定列
<el-table-column prop="name" label="姓名" fixed></el-table-column>
- 合并行/列
<el-table :span-method="arraySpanMethod"></el-table>
span-method
返回[rowspan, colspan]
数组,控制单元格合并
- 动态列
<el-table-column v-for="col in columns" :key="col.prop" :prop="col.prop" :label="col.label"></el-table-column>
- 树形表格
<el-table :data="treeData" row-key="id" :tree-props="{children:'children', hasChildren:'hasChildren'}">
9. 事件常用列表
事件名 | 说明 |
---|---|
row-click | 行点击事件 |
row-dblclick | 行双击 |
row-contextmenu | 行右键 |
selection-change | 复选框选中变化 |
sort-change | 排序变化 |
current-change | 当前行变化(可结合 highlight-current-row ) |
总结
Element UI Table 是一个功能丰富的表格组件,支持:
- 基本表格展示
- 排序、筛选
- 多选、操作列
- 固定列、树形表格
- 分页和自定义插槽
通过合理使用 索引列、插槽、自定义事件和分页,可以轻松构建复杂的后台管理表格。
如果你需要,我可以帮你整理一份 Element UI Table 高级应用示意图,把:
- 基础表格
- 插槽操作列
- 分页与多选
- 固定列和树形表格
发表回复