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 相关文章推荐
Jquery 实现Tab效果 思路是js思路
Mar 02 Javascript
js截取函数(indexOf,join等)
Sep 01 Javascript
jQuery中调用WebService方法小结
Mar 28 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
javascript清空table表格的方法
May 14 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
vue鼠标悬停事件实例详解
Apr 01 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
微信小程序 wxParse插件显示视频问题
Sep 27 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 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 开发工具
2006/12/06 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
给ECShop添加最新评论
2015/01/07 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
微信小程序 五星评分的实现实例
2017/08/04 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
实习教师自我鉴定
2013/12/09 职场文书
二年级数学教学反思
2014/01/21 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
我的理想演讲稿
2014/04/30 职场文书
中秋节活动总结
2014/08/29 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
Java 数组的使用
2022/05/11 Java/Android