element-plus的table的render-header怎么用(data: { column: any, $index: number }) => void
时间: 2024-12-27 19:30:41 浏览: 19
Element Plus 的 Table 组件的 `render-header` 属性是一个自定义渲染列头的函数,它接受两个参数:
1. `column: any`: 这是一个对象,包含了当前列的相关信息,例如标题 (`title`)、字段名称 (`field`)、是否可以排序 (`sortable`) 等。
2. `$index: number`: 表示当前列在所有列中的索引位置。
这个函数主要用于动态定制表头的显示内容,你可以根据这两个参数来自定义表头单元格的样式、添加交互元素,如点击改变排序方向等。例如,你可以这样使用:
```javascript
<template>
<el-table :data="tableData" border>
<el-table-column type="index" label="#" width="45">
<!-- 默认列头 -->
</el-table-column>
<el-table-column v-for="(column, index) in columns" :key="index" :render-header="customRenderHeader(column)">
<!-- 其他列头,通过 render-header 函数定制 -->
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [], // 数据列表
columns: [
{ field: 'name', title: '姓名' },
{ field: 'age', title: '年龄', sortable: true }
// 更多列...
]
};
},
methods: {
customRenderHeader(column) {
return (h, { column }) => {
let headerHTML = column.title;
// 根据 column 对象定制内容
if (column.sortable) {
headerHTML += `<span class="sort-icon"></span>`;
}
return h('div', headerHTML);
};
}
}
};
</script>
```
在这个例子中,`customRenderHeader` 方法接收每一列的信息,然后返回一个新的 Vue 渲染函数,用于生成每个表头单元格的内容。
阅读全文