Antd-vue Table组件添加Click事件,实现点击某行数据教程


Posted in Javascript onNovember 17, 2020

给Table组件添加Click事件,实现点击某行数据操作

customRow 设置行属性 Function(record, index)

通过customRow 属性给table添加自定义事件

<a-table
  :columns="columns"
  :dataSource="data"
  :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange ,onSelect: handleSelect}"
  bordered
  :customRow="handleClickRow"
 >
 </a-table>
methods: {
 handleClickRow(record, index){
  return {
   on: {
    click: () => {
     console.log(record, index)
    console.log('点击行内容record' + record)
    console.log('序号索引index' + index)
    }
   }
  }
 }
}

控制台输出:

Antd-vue Table组件添加Click事件,实现点击某行数据教程

补充知识:利用filetr 操作 ant-design table某一行的某一列的数据。点击切换真实数据和加密数据

情景描述:

如果有这样一个需求,在table中的某一列的数据,不能直接展示原始数据,而是使用加密符号代替,只有点击了某行某列之后,才能切换到真实数据,每次点击就是一次切换。

这样类似的需求你会怎么实现?

这里使用ant-design UI框架中的table组件做为例子来讲。

首先,肯定会想到用filter(angular中叫pipe,vue里面叫filter)。

上代码:

<span slot="secret" slot-scope="record">
  <span @click="showCode(record)" style="cursor: pointer;">{{ record | 
  codeFilter(secret, currentRecordId) }}</span>
</span>

这里,我们使用了codeFilter这个filter,它有三个参数。

所以,我们先要创建这个filter,

Vue.filter('permisssionCodeFilter', function (data, secret, id) {
 // 初始状态,所有code都以保密符号显示
 if (!id) {
 if (secret) {
  return replaceString(data.code, '*')
 } else {
  return data.code
 }
 } else { // 如果是点击了某行,则只响应该行code是保密显示还是直接显示,其他非点击行都以保密符号显示
 if (id === data.id) {
  if (secret) {
  return replaceString(data.code, '*')
  } else {
  return data.code
  }
 } else {
  return replaceString(data.code, '*')
 }
 }
})

初始状态下,我们没有点击任何一行,所以id肯定是空的,那么根据secret这个参数是true还是false来决定所有行的数据都是直接显示还是加密符号显示。

replaceString()是一个公共方法,用来替换字符串的值

/**
 * replace string
 * @param string
 * @param target
 */
export function replaceString (string, target) {
 let retValue = string
 const stringArr = string.split('')
 stringArr.forEach(t => {
 retValue = retValue.replace(t, target)
 })
 return retValue
}

接着,如果是点击了某行的那个数据,怎么做到该数据要显示真实数据还是加密符号?如果是点了其他行,怎么隐藏该行的数据,而显示当前点击行的数据?

先看点击事件的方法:

showCode (record) {
  // 如果当前行显示的是密文,则先将点击行的id赋给currentId,以便下面这个条件可以满足,修改screct的值;
  // 如果当前行显示的是明文,则不需要满足下面的条件,secret的值无需修改,因为点击该行之后,所有行数据都是显示密文
  if (this.secret) {
  this.currentId = record.id
  }
  if (!this.currentId || this.currentId === record.id) {
  this.secret = !this.secret
  }
  this.currentId = record.id
 },

如果当前行显示的是密文,则先将点击行的id赋给currentId,以便下面这个条件可以满足,修改screct的值;

如果当前行显示的是明文,则不需要满足下面的条件,secret的值无需修改,因为点击该行之后,所有行数据都是显示密文;

这样就实现了。

要注意的是,这种方法只是临时改变了数据显示在那一列的显示,并没有直接改变表格数据中该列的值。

有些场景是要直接改变表格数据的值,才能在表格上更新,比如该列的值是展示在一个input控件里。

以上这篇Antd-vue Table组件添加Click事件,实现点击某行数据教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
jQuery xml字符串的解析、读取及查找方法
Mar 01 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 jQuery
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 Javascript
利用node.js如何创建子进程详解
Dec 09 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
vue+elementUI实现图片上传功能
Aug 20 Javascript
JS中一些高效的魔法运算符总结
May 06 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 #Javascript
ant design的table组件实现全选功能以及自定义分页
Nov 17 #Javascript
ant design pro中可控的筛选和排序实例
Nov 17 #Javascript
antd table按表格里的日期去排序操作
Nov 17 #Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 #Javascript
解决vue-cli输入命令vue ui没效果的问题
Nov 17 #Javascript
详解Vue数据驱动原理
Nov 17 #Javascript
You might like
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
使用grappelli为django admin后台添加模板
2014/11/18 Python
讲解Python中if语句的嵌套用法
2015/05/14 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
非常详细的C#面试题集
2016/07/13 面试题
生产副总岗位职责
2013/11/28 职场文书
文科教师毕业的自我评价
2014/01/16 职场文书
外语系毕业生求职自荐信
2014/04/12 职场文书
学校募捐倡议书
2014/05/14 职场文书
户外宣传策划方案
2014/05/25 职场文书
招商引资工作汇报
2014/10/28 职场文书
2015年安全生产责任书
2015/01/30 职场文书
党员个人年度总结
2015/02/14 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
教师见习总结范文
2015/06/23 职场文书
小学同学聚会感言
2015/07/30 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫