请问el-table,我想点击不同的表头可以让表头改变颜色,并且可以获取这列数据,并且前6个表头还不能点击,这个请问谁知道怎么做么
时间: 2023-08-07 14:04:35 浏览: 75
element ui el-table 动态改变 单元格 的颜色.txt
您可以通过以下步骤实现这个需求:
1. 在表头中添加一个自定义列,用于显示表头的颜色状态和绑定点击事件。
```html
<el-table-column label="表头" prop="header" width="100">
<template slot-scope="{ column }">
<div @click="onHeaderClick(column)" :class="{ 'active': column.active }">{{ column.label }}</div>
</template>
</el-table-column>
```
在上面的代码中,我们使用了 `slot-scope` 来获取表头列的信息,然后在 `div` 标签中绑定了 `click` 事件和 `active` class。`active` class 用来控制表头的颜色状态。
2. 在 data 中添加一个数组,用于存储表头的状态信息。
```javascript
data() {
return {
tableData: [...],
headerStatus: []
}
},
```
3. 在 created 钩子函数中初始化表头状态信息。
```javascript
created() {
this.headerStatus = this.$refs.table.columns.map(column => ({
label: column.label,
active: false,
prop: column.property
})).slice(6)
},
```
在上面的代码中,我们使用了 `$refs` 来获取表格的列信息,然后将前 6 列从状态数组中去除。
4. 实现表头点击事件的处理函数。
```javascript
onHeaderClick(column) {
if (column.index < 6) {
return
}
this.headerStatus.forEach(header => {
header.active = false
})
column.active = true
const prop = column.property
const data = this.tableData.map(item => item[prop])
console.log(data)
},
```
在上面的代码中,我们首先判断点击的表头是否为前 6 列,如果是则直接返回。然后将状态数组中所有表头的状态重置为未选中状态,将当前点击的表头状态设置为选中状态。最后获取当前列的数据并输出到控制台。
5. 在 CSS 样式中定义 `active` class 的样式。
```css
.active {
color: red;
}
```
通过以上步骤,您就可以实现点击不同的表头可以让表头改变颜色,并且可以获取这列数据,并且前 6 个表头还不能点击的需求。
阅读全文