antd的customRender怎么用
用的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
今天我遇到了同样的问题,我第一个思路是跟你一样,配合customRender和slotScope,结果以失败为终。 第二个思路是用template模式实现,结果可想而知。在摸索过程中发现customRender还有一个兄弟,叫customRow方法,查看源码后发现此方法返回值会合并(merge)到tableCell参数中:
更让人高兴的是,这方法在rowSpan和colSpan 问题中起到的作用是跟customRow是一样的,还能跟scopedSlot配合用。这个问题的正解就是customRow+scopedSlot。
相关代码:
返回null 能隐藏也是从源码里看出来的:
最后根据实际情况把计算好的rowSpan和colSpan弄到tableData中来,然后用customRow去控制表单即可。
最后我实现的效果是:
rowSpan和colSpan的计算方式因需求的不同而不同,给出计算过程也是徒劳。
最后,上面截图内容可在
node_modules/ant-design-vue/lib/vc-table/src/TableCell.js
文件中找到。文档中介绍
你是想合并当前行所有单元格,
colSpan=x
,x
是想要合并单元格的格式我也遇到了同样的问题,解决后写了篇笔记,可以看看。