ant design vue中表格指定格式渲染方式
#代码知识 发布时间: 2026-01-12
注意点:定义的columns一定要写在data中,否则在加载过程中由于渲染顺序会导致其中的渲染函数无法识别

渲染方法1:
指定渲染函数:
const columns = [
{
title: '排名',
dataIndex: 'key',
customRender: renderContent // 渲染函数的规则
}, {
title: '搜索关键词',
dataIndex: 'keyword',
customRender: (text, row, index) => {
if (index < 4) { // 前4行数据以a标签的形式被渲染
return <a href="javascript:;" rel="external nofollow" rel="external nofollow" >{text}</a>
}
return { // 否则以独占4列的文本形式被渲染
children: text,
attrs: {
colSpan: 4
}
}
}
}
]
const renderContent = (value, row, index) => {
const obj = {
children: value,
attrs: {}
}
return obj
}
渲染方法2:
直接调用对应插槽模板:
<a-table :columns="columns" :dataSource="data" :pagination='pagination'>
<template slot="operation">
<a-select placeholder="选择操作" style="width: 100%" @change="listHandleChange">
<a-select-option value="1">项目进度</a-select-option>
<a-select-option value="2">质量管控</a-select-option>
<a-select-option value="3">运维监控</a-select-option>
</a-select>
</template>
<template slot='progress' slot-scope="text,record">
<span>{{text}}</span>
<span v-if='record.progressstatus'><a-icon class='arrow-up' type="arrow-up" /> </span>
<span v-if='!record.progressstatus'><a-icon class='arrow-down' type="arrow-down" /></span>
</template>
</a-table>
const columns = [
{
title: '编号',
dataIndex: 'number',
customRender: renderContent
}, {
title: '项目名称',
dataIndex: 'name',
customRender: (text, row, index) => {
return {
children: <a href="javascript:;" rel="external nofollow" rel="external nofollow" >{text}</a>,
attrs: {}
}
}
}, {
title: '项目进度',
dataIndex: 'progress',
scopedSlots: { customRender: 'progress' } // 模板中对应的slot-scope可以用来传递参数,其中第一个参数是当前字段对应的值progress,第二个参数是当前字段对应的所有值对象,即整个data[n]
}, {
title: '操作',
dataIndex: 'operate',
scopedSlots: { customRender: 'operation' } // 直接对应插槽名为operation的模板
}
]
const data = [
{
key: 6,
number: 6,
name: '雅典娜',
progress: '88%',
progressstatus: 1
}
]
补充知识:Ant design vue框架,table控件中customRow用法的一个坑
今天在写代码时,用到Ant design框架中的<a-table>控件,其中的一个需求是:点击table中的一行,需要执行一些操作。因为没有默认的行点击事件,需要用到customRow来进行自定义。
这个方法,在官方的文档中,有使用说明,如下:
<Table
customRow={(record) => {
return {
props: {
xxx... //属性
},
on: { // 事件
click: (event) => {}, // 点击行
dblclick: (event) => {},
contextmenu: (event) => {},
mouseenter: (event) => {}, // 鼠标移入行
mouseleave: (event) => {}
},
};
)}
customHeaderRow={(column) => {
return {
on: {
click: () => {}, // 点击表头行
}
};
)}
/>
官方的这个写法,应该是属于lamada的语法,今天我在使用时,也是使用这种写法。
如下:
methods:{
getDetailList(id){
//执行具体的操作
},
rowClick: (record, index) => ({
// 事件
on: {
click: event => {
// 点击该行时要做的事情
console.log('record', record)
console.log('index', index)
console.log('event', event)
this.getDetailList(record.id) //这一行会报错,报未定义
}
}
})
}
在执行时,会报错,如下:
[Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘getDetailList' of undefined”。
不使用lamada表达式,则不会出现这样的问题,修改后的rowClick方法如下:
rowClick(record, index) {
return {
on: {
click: () => {
console.log(record, index)
this.getDetailList(record.matbillid)
}
}
}
},
可正常执行,并能正确调用getDetailList方法
以上这篇ant design vue中表格指定格式渲染方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
代码知识SEO上一篇 : python使用selenium爬虫知乎的方法示例
下一篇 : Unity中Instantiate实例化物体卡顿问题的解决
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!