ant design vue中表格指定格式渲染方式


Posted in Javascript onOctober 28, 2020

注意点:定义的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中表格指定格式渲染方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
自己动手写的javascript前端等待控件
Oct 30 Javascript
浅析创建javascript对象的方法
May 13 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
bootstrapValidator表单验证插件学习
Dec 30 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
一个可复用的vue分页组件
May 15 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 Javascript
OpenLayers3实现地图显示功能
Sep 25 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
Oct 28 #Javascript
ant design vue datepicker日期选择器中文化操作
Oct 28 #Javascript
微信小程序picker组件两列关联使用方式
Oct 27 #Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 #Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 #Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 #Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 #Javascript
You might like
开发大型 PHP 项目的方法
2007/01/02 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python 排列组合之itertools
2013/03/20 Python
构建Python包的五个简单准则简介
2015/06/15 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
python标记语句块使用方法总结
2019/08/05 Python
使用python turtle画高达
2020/01/19 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
实习协议书范本
2014/09/25 职场文书
市场总监岗位职责
2015/02/11 职场文书
书法社团活动总结
2015/05/07 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Redis性能监控的实现
2021/07/09 Redis