给Table组件添加Click事件,实现点击某行数据操作
customRow | 设置行属性 | Function(record, index) |
---|
通过customRow 属性给table添加自定义事件
1
2
3
4
5
6
7
8
|
< a-table :columns = "columns" :dataSource = "data" :rowSelection = "{selectedRowKeys: selectedRowKeys, onChange: onSelectChange ,onSelect: handleSelect}" bordered :customRow = "handleClickRow" > </ a-table > |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
methods: { handleClickRow(record, index){ return { on: { click: () => { console.log(record, index) console.log( '点击行内容record' + record) console.log( '序号索引index' + index) } } } } } |
控制台输出:
补充知识:利用filetr 操作 ant-design table某一行的某一列的数据。点击切换真实数据和加密数据
情景描述:
如果有这样一个需求,在table中的某一列的数据,不能直接展示原始数据,而是使用加密符号代替,只有点击了某行某列之后,才能切换到真实数据,每次点击就是一次切换。
这样类似的需求你会怎么实现?
这里使用ant-design UI框架中的table组件做为例子来讲。
首先,肯定会想到用filter(angular中叫pipe,vue里面叫filter)。
上代码:
1
2
3
4
|
<span slot= "secret" slot-scope= "record" > <span @click= "showCode(record)" style= "cursor: pointer;" >{{ record | codeFilter(secret, currentRecordId) }}</span> </span> |
这里,我们使用了codeFilter这个filter,它有三个参数。
所以,我们先要创建这个filter,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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()是一个公共方法,用来替换字符串的值
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/** * 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 } |
接着,如果是点击了某行的那个数据,怎么做到该数据要显示真实数据还是加密符号?如果是点了其他行,怎么隐藏该行的数据,而显示当前点击行的数据?
先看点击事件的方法:
1
2
3
4
5
6
7
8
9
10
11
|
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事件,实现点击某行数据教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/m0_37903882/article/details/101322212