注意点:定义的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中表格指定格式渲染方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。