vue实现elementUI表格列分离
时间: 2023-07-11 07:43:52 浏览: 445
要实现ElementUI表格列分离,可以使用ElementUI的Table组件,并结合Vue的计算属性和作用域插槽来实现。具体步骤如下:
1. 在模板中使用Table组件,设置columns属性为表头数据数组,设置data属性为表格内容数据数组。
2. 在Table组件中使用作用域插槽slot-scope="scope"来渲染表格内容单元格。在作用域插槽中使用v-for指令渲染表头数据,每个表头单元格绑定一个计算属性,计算属性的值为当前列的内容数据数组。
3. 在作用域插槽中使用当前列的field值作为索引获取当前行的内容数据,从而确定当前单元格的内容。
下面是一个简单的示例代码:
```
<template>
<el-table :data="rowDataList" :columns="columnData">
<template slot-scope="scope">
<el-table-column v-for="(colData, index) in columnData" :key="index" :label="colData.title">
<template slot-scope="scope2">
{{ splitRowData[index][scope.$index] }}
</template>
</el-table-column>
</template>
</el-table>
</template>
<script>
export default {
data() {
return {
columnData: [
{ title: '姓名', field: 'name' },
{ title: '年龄', field: 'age' },
{ title: '性别', field: 'gender' },
],
rowDataList: [
{ name: '张三', age: 18, gender: '男' },
{ name: '李四', age: 20, gender: '女' },
{ name: '王五', age: 22, gender: '男' },
],
};
},
computed: {
splitRowData() {
const data = {};
this.columnData.forEach((colData) => {
data[colData.field] = this.rowDataList.map((rowData) => rowData[colData.field]);
});
return data;
},
},
};
</script>
```
在上面的代码中,我们使用了计算属性 splitRowData 来将 rowDataList 数组按照列分离成一个对象,对象的属性名为列的 field 值,属性值为当前列的内容数据数组。在模板中,我们使用作用域插槽和 v-for 指令渲染表头单元格和表格内容单元格,同时绑定计算属性 splitRowData 中对应列的数据数组。这样就实现了ElementUI表格列的分离。
阅读全文