在element中el-table进行相应的改造,能满足列表中的相应数据后面添加对应的单位如:%,头部标题能够通过对应的el-tooltip进行相应的解释,原型如下图所示:

目标一:实现列表中数字后面添加%;

目标二:实现头部tooltip显示,进行相应解释;

实现方法:

通过vue 插槽之 v-slot 与 slot-scope进行解决;

简单解释一下:

  • slot 插槽

是 Vue 中的一个特殊特性,它的作用是:在指定位置开辟一个空间,给未来的元素使用给,这里所谓的未来的元素就是组件的内容,但是 slot 已被废弃了,但是也是可以用的。

  • 作用域插槽(slot-scope)

作用域插槽其实就是一个带有数据的插槽,我们知道组件中的数据只能在对应的组件模板中使用,在其他地方无法获取,那么要想在其他地方获取到该数据,就可以通过使用 slot-scope 来获取,但是 slot-scope 已被废弃。

slot-scope 用来绑定的是子组件的数据,在组件模板中书写所需 slot 插槽,并将当前组件的数据通过 v-bind 绑定在 slot 标签上。

 注意:

只要出现多个插槽,请始终为所有的插槽使用完整的基于 <template> 的语法:

<current-user>

    <template v-slot:default="slotProps">

       {{ slotProps.user.firstName }}

   </template>

   <template v-slot:other="otherSlotProps">

      ...

    </template>

所以咱们上面的实现相对就简单了:如下

 <el-table-column label="业务收益率E" align="center" prop="incomeRate" >

        <template slot-scope="scope">

          {{scope.row.incomeRate}}%

        </template>

        <template v-slot:header>

        <el-tooltip content="业务收益率E=C/B " placement="top-start" effect="light">

          <i class="el-icon-warning-outline"></i>

        </el-tooltip>

        <span>业务收益率E(%)</span>

        </template>

      </el-table-column>

 

在 Vue 3.0 使用 Element Plus 的 Table 组件并实现动态二级表头渲染数据,可以按照以下步骤进行: 1. **引入依赖**: 首先,你需要安装 Element Plus 和相关的依赖,例如 `vue`, `element-plus` 等。如果你还没有安装,可以在项目目录下运行: ```sh npm install element-plus vue ``` 2. **设置组件结构**: 在你的 Vue 组件,创建一个模板来展示表格,并包含一个 `el-table` 元素,以及必要的列配置和数据源。 ```html <template> <div> <el-table :data="tableData" :columns="tableColumns" @render-header="renderHeader"> <!-- ...其他表头和行... --> </el-table> </div> </template> ``` 3. **定义表头数据和列**: 初始化 `tableData` 和 `tableColumns` 变量,其 `tableColumns` 初始状态可以是一个简单的数组,只包含一级表头信息。动态二级表头可以通过一个嵌套数组来表示,每个子数组对应一个父级列,包含该列下的子标题对应的处理函数。 ```js <script setup> import { ref } from 'vue' const tableData = // 这里放置你的实际数据源 const tableColumns = ref([ { label: '一级标题', children: [ { title: '子标题1', renderHeader: () => /* 返回HTML元素 */ }, { title: '子标题2', renderHeader: () => /* 返回HTML元素 */ } // ...更多子标题 ] }, // ...其他一级表头 ]) function renderHeader({ column, $index }) { return ( <template v-for="(subColumn, index) in column.children" :key="index"> {/* 根据 subColumn 渲染相应的二级表头 */} </template> ) } </script> ``` 4. **监听数据变化**: 如果你的数据源有变动,比如新增、修改或删除二级表头,你需要更新 `tableColumns` 变量。可以通过响应式编程库(如 Vue 的 `watch` 或者第三方库 like `vue-observe-array`) 来实现。 5. **完善渲染函数**: 在 `renderHeader` 函数,根据 `column.children` 内容动态生成 HTML 表格头部。这通常涉及到创建一个新的 `<el-row>` 和 `<el-col>` 结构,然后插入子标题。 6. **样式调整**: 考虑到样式的一致性,可能需要对动态生成的二级表头应用一些 CSS 规则,比如颜色、宽度等。 **相关问题**: 1. 如何在 Vue 监听数据源变化来同步表头? 2. 如何在 `renderHeader` 获取到当前行的数据? 3. 如何处理动态二级表头的点击事件或排序功能?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值