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 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
SeaJS入门教程系列之使用SeaJS(二)
Mar 03 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
详解Node.js access_token的获取、存储及更新
Jun 20 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
webpack4 CSS Tree Shaking的使用
Sep 03 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
vue实现记事本功能
Jun 26 Javascript
JavaScript如何使用插值实现图像渐变
Jun 28 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 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简单获取目录列表的方法
2015/03/24 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python虚拟环境完美部署教程
2019/08/06 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
考试作弊被抓检讨书
2014/01/10 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
遗产继承公证书
2014/04/09 职场文书
学校端午节活动方案
2014/08/23 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
图书借阅制度范本
2015/08/06 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python