el-table组件二次封装,支持多选,单选带checkbox,初始化默认选中,分页功能
在Vue.js中使用Element UI库时,可以通过二次封装el-table
组件来增加多选、单选带复选框、初始化默认选中以及分页功能的支持。以下是一个简单的示例:
<template>
<div>
<el-table
:data="tableData"
style="width: 100%"
@selection-change="handleSelectionChange"
@row-click="handleRowClick"
>
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<!-- 其他列 -->
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [], // 表格数据
multipleSelection: [], // 多选框选中的行
currentPage: 1, // 当前页
pageSize: 10, // 每页显示条数
total: 0, // 总条数
};
},
methods: {
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleRowClick(row, column, event) {
// 如果已经选中,则取消选中;否则选中当前行
if (this.multipleSelection.includes(row)) {
this.$refs.multipleTable.toggleRowSelection(row, false);
} else {
this.$refs.multipleTable.toggleRowSelection(row, true);
}
},
handleSizeChange(val) {
this.pageSize = val;
// 重新加载数据
},
handleCurrentChange(val) {
this.currentPage = val;
// 重新加载数据
},
// 初始化默认选中逻辑
initDefaultSelection() {
// 假设你已经知道默认选中的行的数组是defaultSelection
const defaultSelection = []; // 默认选中的行
defaultSelection.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row, true);
});
}
},
mounted() {
// 初始化表格数据
// 假设fetchData是获取表格数据的方法
this.fetchData().then(data => {
this.tableData = data.items;
this.total = data.total;
// 调用初始化默认选中的方法
this.initDefaultSelection();
});
}
};
</script>
在这个例子中,el-table
组件被用来展示数据,并且支持多选、单选带复选框的行点击事件。el-pagination
组件用于分页,并且可以通过handleSizeChange
和handleCurrentChange
方法来控制分页和数据加载。initDefaultSelection
方法用于初始化默认选中的行。
请注意,
评论已关闭