vue3怎么获取表格el-table-column的id
时间: 2023-10-28 15:19:57 浏览: 242
vue实现在表格里,取每行的id的方法
在Vue3中,el-table-column组件并没有提供id属性,但是可以通过其他方式获取其对应的数据。以下是两种常用的方法:
1. 通过$refs获取el-table-column组件
可以在el-table组件中给每个el-table-column组件分别指定一个ref属性,然后通过this.$refs来获取对应的el-table-column组件。例如:
```
<template>
<el-table :data="tableData" ref="table">
<el-table-column label="姓名" prop="name" ref="nameColumn"></el-table-column>
<el-table-column label="年龄" prop="age" ref="ageColumn"></el-table-column>
<el-table-column label="性别" prop="gender" ref="genderColumn"></el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'John', age: 25, gender: 'Male' },
{ id: 2, name: 'Mary', age: 30, gender: 'Female' },
{ id: 3, name: 'Tom', age: 20, gender: 'Male' }
]
}
},
methods: {
getColumnData() {
// 获取姓名列的数据
const nameColumn = this.$refs.nameColumn;
const nameData = nameColumn.filteredData || nameColumn.renderData;
// 获取年龄列的数据
const ageColumn = this.$refs.ageColumn;
const ageData = ageColumn.filteredData || ageColumn.renderData;
// 获取性别列的数据
const genderColumn = this.$refs.genderColumn;
const genderData = genderColumn.filteredData || genderColumn.renderData;
console.log('姓名列数据:', nameData);
console.log('年龄列数据:', ageData);
console.log('性别列数据:', genderData);
}
}
}
</script>
```
在上面的例子中,通过this.$refs获取了每个el-table-column组件的实例,并通过filteredData或renderData属性获取了对应的数据。需要注意的是,filteredData表示经过筛选后的数据,而renderData表示未经过筛选的数据。
2. 通过表格的$attrs属性获取el-table-column组件的prop属性
el-table-column组件的prop属性对应着表格中的数据属性名,可以通过表格的$attrs属性获取该属性值。例如:
```
<template>
<el-table :data="tableData" ref="table">
<el-table-column label="姓名" prop="name"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
<el-table-column label="性别" prop="gender"></el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'John', age: 25, gender: 'Male' },
{ id: 2, name: 'Mary', age: 30, gender: 'Female' },
{ id: 3, name: 'Tom', age: 20, gender: 'Male' }
]
}
},
methods: {
getColumnData() {
// 获取姓名列的数据
const nameProp = this.$attrs['name-column'];
const nameData = this.tableData.map(item => item[nameProp]);
// 获取年龄列的数据
const ageProp = this.$attrs['age-column'];
const ageData = this.tableData.map(item => item[ageProp]);
// 获取性别列的数据
const genderProp = this.$attrs['gender-column'];
const genderData = this.tableData.map(item => item[genderProp]);
console.log('姓名列数据:', nameData);
console.log('年龄列数据:', ageData);
console.log('性别列数据:', genderData);
}
}
}
</script>
```
在上面的例子中,通过this.$attrs获取了每个el-table-column组件的prop属性,并通过map方法获取了对应的数据。需要注意的是,$attrs属性是一个对象,属性名需要用"-"连接。例如,prop属性为"name"的el-table-column组件的$attrs属性为"name-column"。
阅读全文