antdesignvue中表格指定格式渲染⽅式
注意点:定义的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="选择操作" @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: {
< //属性
},
on: { // 事件
click: (event) => {},    // 点击⾏
dblclick: (event) => {},
contextmenu: (event) => {},
mouseenter: (event) => {}, // ⿏标移⼊⾏
mouseleave: (event) => {}
},
};
)}
customHeaderRow={(column) => {
return {
on: {
click: () => {},    // 点击表头⾏
}
antdesignvuetable动态表头};
)}
/>
官⽅的这个写法,应该是属于lamada的语法,今天我在使⽤时,也是使⽤这种写法。
如下:
methods:{
getDetailList(id){
/
/执⾏具体的操作
},
rowClick: (record, index) => ({
// 事件
on: {
click: event => {
// 点击该⾏时要做的事情
console.log('record', record)
console.log('index', index)
console.log('event', event)
}
}
})
}
在执⾏时,会报错,如下:
[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)
}
}
}
},
可正常执⾏,并能正确调⽤getDetailList⽅法
以上这篇ant design vue中表格指定格式渲染⽅式就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。