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 相关文章推荐
js打开新窗口方法整理
Feb 17 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
js实现文字截断功能
Sep 14 Javascript
JS去除重复并统计数量的实现方法
Dec 15 Javascript
JS从非数组对象转数组的方法小结
Mar 26 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
May 29 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
Aug 19 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 开源框架22个简单简介
2009/08/24 PHP
php实现的RSS生成类实例
2015/04/23 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
Python实现随机漫步功能
2018/07/09 Python
学python需要去培训机构吗
2020/07/01 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
开办大学饮食联盟创业计划书
2014/01/29 职场文书
高级编程求职信模板
2014/02/16 职场文书
读群众路线心得体会
2014/03/07 职场文书
初一学生期末评语
2014/04/24 职场文书
初一新生军训方案
2014/05/22 职场文书
经典团队口号大全
2014/06/21 职场文书
普通话宣传标语
2014/06/26 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
大学学生个人总结
2015/02/15 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python