antd的customRender怎么用

发布于 2022-09-12 04:07:55 字数 879 浏览 22 评论 0

用的antd vue ,table表,我的每个单元格上面有用 scopedSlots: { customRender: 'edit' },引入插槽,,但是我要是用customRender合并功能的话,因为customRender影响是这个表头下的所有单元格。所以我设置的插槽就不显示了,我想知道有没有办法让插槽跟合并功能共存,表头下不满足我判断的单元格,不合并,显示插槽,求大神解惑

  {
    title: '二级单位名称',
    dataIndex: '2',
    key: '2',
    align: 'center',
    width: '120px',
    colSpan: 1,
    scopedSlots: { customRender: 'edit' },//引入的插槽
    customRender: (text, row, index) => {
      const obj = {
        children: text,
        attrs: {}
      }
      if (index === 4) {
        obj.attrs.colSpan = 0
      }
      return obj
    }
  },
 // 引入edit 插槽
     <template slot="edit" slot-scope="text, record">
        <div ">{{text}}</div>
         <a-input :value="text"
          @change="e => handleChange(e.target.value,  record, e.target)"       />
      </template>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聽兲甴掵 2022-09-19 04:07:55

今天我遇到了同样的问题,我第一个思路是跟你一样,配合customRender和slotScope,结果以失败为终。 第二个思路是用template模式实现,结果可想而知。在摸索过程中发现customRender还有一个兄弟,叫customRow方法,查看源码后发现此方法返回值会合并(merge)到tableCell参数中:
image
更让人高兴的是,这方法在rowSpan和colSpan 问题中起到的作用是跟customRow是一样的,还能跟scopedSlot配合用。这个问题的正解就是customRow+scopedSlot。
相关代码:
image.png
返回null 能隐藏也是从源码里看出来的:
image.png
最后根据实际情况把计算好的rowSpan和colSpan弄到tableData中来,然后用customRow去控制表单即可。
最后我实现的效果是:
image.png

rowSpan和colSpan的计算方式因需求的不同而不同,给出计算过程也是徒劳。
最后,上面截图内容可在node_modules/ant-design-vue/lib/vc-table/src/TableCell.js 文件中找到。

等你爱我 2022-09-19 04:07:55

文档中介绍

表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。

你是想合并当前行所有单元格,colSpan=xx是想要合并单元格的格式

一身骄傲 2022-09-19 04:07:55

我也遇到了同样的问题,解决后写了篇笔记,可以看看。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文