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 相关文章推荐
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
Apr 17 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
vue2.X组件学习心得(新手必看篇)
Jul 05 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
vue2.0 循环遍历加载不同图片的方法
Mar 06 Javascript
webpack组织模块打包Library的原理及实现
Mar 10 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
May 29 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
微信小程序实现左滑删除效果
Nov 18 Javascript
Vuex实现简单购物车
Jan 10 Vue.js
解决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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php构造函数的继承方法
2015/02/09 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
Python yield使用方法示例
2013/12/04 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python小程序实现刷票功能详解
2019/07/17 Python
python字典的遍历3种方法详解
2019/08/10 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
工作会议欢迎词
2014/01/16 职场文书
大学班级学风建设方案
2014/05/01 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
力学专业求职信
2014/07/23 职场文书
老干部座谈会主持词
2015/07/03 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js