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 查找select ,并触发事件的实现代码
Mar 30 Javascript
使用JavaScript动态设置样式实现代码及演示动画
Jan 25 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
vue 实现把路由单独分离出来
Aug 13 Javascript
Java 生成随机字符的示例代码
Jan 13 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
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python实现简易内存监控
2018/06/21 Python
Python中 map()函数的用法详解
2018/07/10 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
Ruby如何定义一个类
2012/10/08 面试题
培训心得体会
2013/12/29 职场文书
实习生自我评价
2014/01/18 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
学生犯错保证书
2015/05/09 职场文书
新学期感想
2015/08/10 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
详解Redis主从复制实践
2021/05/19 Redis
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL