element el-table组件自定义表头,给表头添加点击事件

本文介绍了如何在Vue.js中利用Element UI的el-table组件进行表头自定义,并添加点击事件。通过使用`slot="header"`和`render-header`方法,可以实现对表格头部的个性化操作,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、slot="header"

1212

<el-table-column prop="handle">
    <template slot="header">
        <span @click="seeDetail">查看详情</span>
        <span class="explain" @click="seeHandle">只查看待处理</span>
    </template>
    <template slot-scope="scope">
        <span>{{ scope.row.operateType === '1' ? '无申诉查看详情' : '申诉待处理' }}</span>
    </template>
</el-table-column>

 2、render-header方法

1212

<el-table-column
    prop="handle"
    :render-header="renderHeader"
    align="center">
    <template slot-scope="scope">
        <span :class="scope.row.handle === '1' ? 'noAppeal' : 'appeal'">{{ scope.row.handle === '1' ? '无申诉查看详情' : '申诉待处理' }}</span>
    </template>
</el-table-column>
renderHeader (h, column) {
    return h('div', [
            h('span', {
                style: `cursor: pointer;`,
                on: {
                    click: this.seeDetail
                }
            }, '查看详情'),
            h('span', {
                style: `background-color: #666;margin-left: 10px;padding: 6px 10px;cursor: pointer;`,
                on: {
                    click: this.seeHandle
                }
            }, '只查看待处理')
        ]
    )
},
seeDetail() {
    console.log('查看详情111')
},
seeHandle() {
    console.log('查看待处理1111')
},

### 使用 `el-table` 组件实现自定义表头筛选渲染 在 Element UI 中,可以通过配置 `el-table-column` 来实现自定义表头并加入筛选功能。具体来说,在 `el-table-column` 上可以设置 `filters`, `filter-method` 和其他属性来定制化表头的行为。 对于更复杂的场景,比如希望完全控制表头的内容和行为,则可以利用作用域插槽 (Scoped Slot),即通过 `<template slot-scope>` 或者简化的写法 `<template #header>...</template>` 定义表头区域内的 HTML 结构以及交互逻辑[^1]。 下面是一个简单的例子展示如何创建带有过滤器的列,并且允许用户输入关键字来进行模糊匹配: ```html <template> <div class="app-container"> <!-- 表格 --> <el-table :data="tableData" style="width: 100%"> <!-- 自定义表头 --> <el-table-column prop="name" label="姓名"> <template #header="{ column }"> <span>{{ column.label }}</span> <input type="text" placeholder="请输入..." v-model="searchName"/> </template> </el-table-column> <el-table-column prop="address" label="地址"></el-table-column> <!-- 增加一个具有内置筛选选项的列 --> <el-table-column prop="tag" label="标签" :filters="[{ text: '家', value: '家' }, { text: '公司', value: '公司' }]" :filter-method="(value, row) => row.tag === value" filter-placement="bottom-end"> <template #default="scope"> <el-tag :type="scope.row.tag === '家' ? '' : 'success'" disable-transitions>{{ scope.row.tag }}</el-tag> </template> </el-table-column> </el-table> <!-- 数据源 --> <script setup lang="ts"> import { ref, computed } from "vue"; const searchName = ref(''); let tableDataRaw = [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', tag: '家' }, ... ]; // 计算属性用于处理搜索框的变化 const tableData = computed(() => tableDataRaw.filter(data => !searchName.value || data.name.toLowerCase().includes(searchName.value.toLowerCase())) ); </script> </template> ``` 上述代码片段展示了两个主要部分:一个是普通的文本字段作为表头的一部分;另一个则是使用预设好的条件列表进行精确筛选的功能。此外还包含了基于 Vue.js 的响应式编程模式,使得当用户的输入发生变化时能够实时更新显示的数据集[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值