el-table prop为对象数组时,根据数组拆分为多行
时间: 2024-01-21 15:20:07 浏览: 84
可以使用 `row-key` 和 `span-method` 这两个属性来实现将对象数组拆分为多行。
首先,在 `el-table` 中设置 `row-key` 属性为一个函数,该函数返回每个对象的唯一标识符,例如:
```
<el-table :data="tableData" :row-key="getRowKey">
...
</el-table>
```
其中,`getRowKey` 函数应该返回每个对象的唯一标识符,例如:
```
methods: {
getRowKey(row) {
return row.id;
}
}
```
然后,在表格中使用 `span-method` 属性来定义行和列的合并方式,例如:
```
<el-table :data="tableData" :row-key="getRowKey" :span-method="handleSpanMethod">
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column prop="age" label="Age"></el-table-column>
<el-table-column prop="gender" label="Gender"></el-table-column>
</el-table>
```
其中,`handleSpanMethod` 函数应该返回一个对象,该对象指定了当前单元格需要跨越多少行和多少列,例如:
```
methods: {
handleSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
// 如果是第一列,则需要跨越本行的所有列
return {
rowspan: row.items.length,
colspan: 1
};
} else {
// 其他列不需要跨越行
return {
rowspan: 1,
colspan: 1
};
}
}
}
```
其中,`rowIndex` 和 `columnIndex` 分别表示当前单元格所在的行和列的索引,`row` 表示当前行的数据,`column` 表示当前列的配置。
需要注意的是,上述代码中的 `row.items` 表示每行数据中的一个数组,用来表示当前行需要拆分成多少行,该数组需要在数据中进行定义。例如:
```
tableData: [
{
id: 1,
name: 'John',
age: 18,
gender: 'Male',
items: [
{ name: 'John', age: 18, gender: 'Male' },
{ name: 'Lucy', age: 20, gender: 'Female' },
{ name: 'Tom', age: 25, gender: 'Male' }
]
},
...
]
```
上述代码中,每个对象都包含一个 `items` 属性,该属性是一个数组,用来表示当前行需要拆分成多少行。在 `handleSpanMethod` 函数中,可以根据 `row.items.length` 来确定当前行需要跨越多少行。
阅读全文