一个具名插槽
当前位置:   article > 正文

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

el-table slot

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

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

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

  1. <el-table :data="data.tableData" border style="width: 100%">
  2. <el-table-column prop="date" label="Date" width="180" />
  3. <el-table-column prop="name" label="Name" width="180" />
  4. <el-table-column prop="address" label="Address" />
  5. <el-table-column label="操作">
  6. <template #default="scope">
  7. <slot name="dog"></slot>
  8. </template>
  9. </el-table-column>
  10. </el-table>

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

  1. <div class="container">
  2. <Name>
  3. <template #dog">
  4. <el-button @click="getData(scope.row)">详情</el-button>
  5. </template>
  6. </Name>
  7. </div>

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

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

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

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

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

子组件

  1. <el-table :data="data.tableData" border style="width: 100%">
  2. <el-table-column prop="date" label="Date" width="180" />
  3. <el-table-column prop="name" label="Name" width="180" />
  4. <el-table-column prop="address" label="Address" />
  5. <el-table-column label="操作">
  6. <template #default="scope">
  7. <slot name="dog" :row="scope.row"></slot>
  8. </template>
  9. </el-table-column>
  10. </el-table>

父组件

  1. <div class="container">
  2. <Name>
  3. <template #dog="scope">
  4. <el-button @click="fff(scope.row)">啊啊啊</el-button>
  5. </template>
  6. </Name>
  7. </div>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/117970
推荐阅读
相关标签