el-table表格添加具名插槽并传递数据

24 篇文章 0 订阅
2 篇文章 0 订阅

以下举例使用vite+vue3+element plus
我在操作栏内,使用默认template获取了表格的行内数据scope

操作栏内的按钮之类的需要自己来自定义

这里是一个公共组件,增加了<slot name="dog"><slot>一个具名插槽

  <el-table :data="data.tableData" border style="width: 100%">
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" />
    <el-table-column label="操作">
      <template #default="scope">
        <slot name="dog"></slot>
      </template>
    </el-table-column>
  </el-table>

但是由于父组件使用这个组件时也会用到<template #dog></template>

  <div class="container">
    <Name>
      <template #dog">
        <el-button @click="getData(scope.row)">详情</el-button>
      </template>
    </Name>
  </div>

这种情况是拿不到行内数据的,具体原因博主也不是很清楚,可能是由于template嵌套的原因

经过多番测试,最终改为了以下解决方案(不代表唯一解决方案,博主是自己测试出来的)

1.给子组件具名插槽绑定动态属性row

2.在父组件使用具名插槽时用scope来接收

这父组件的插槽内的按钮就可以拿到表格行内的数据了

子组件

  <el-table :data="data.tableData" border style="width: 100%">
    <el-table-column prop="date" label="Date" width="180" />
    <el-table-column prop="name" label="Name" width="180" />
    <el-table-column prop="address" label="Address" />
    <el-table-column label="操作">
      <template #default="scope">
        <slot name="dog" :row="scope.row"></slot>
      </template>
    </el-table-column>
  </el-table>

父组件

  <div class="container">
    <Name>
      <template #dog="scope">
        <el-button @click="fff(scope.row)">啊啊啊</el-button>
      </template>
    </Name>
  </div>

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值