首页 > 其他分享 >由el-table行点击事件row-click与列按钮事件冲突引发的修饰符知识恶补

由el-table行点击事件row-click与列按钮事件冲突引发的修饰符知识恶补

时间:2022-09-05 11:13:09浏览次数:57  
标签:el 恶补 修饰符 点击 事件 按钮 click row

一、事情的起因

表格里有勾选框,还有操作按钮,如下图

image.png

等功能开发完后,需求临时说要加一个行点击也能选中的功能,

心想,加就加呗,直接一个梭哈,在el-table表格里加上

@row-click="handleRowClick", 然后就提交了

功能倒是能用,就是点击按钮的时候也触发了,果不其然被测试打回重写(狗头)

二、事情的经过

一开始,我想着通过row-click的参数来做区分,因为row-click的默认参数有row, column, event这三个,其中column就可以拿到点击时候,鼠标所在的列(column.property就是这一列绑定的数值项,用其他也可以),根据这个,倒是修复了点击按钮,也会触发row-click函数的bug。

但还是差点意思,因为上述方法,会将操作按钮那一整列都划分为不触发row-click函数的区域,如果鼠标在这区域里,但不在按钮上,就触发不了任何函数,用户体验感还是有点差强人意。

于是乎,我把目光放到了修饰符上,因为这种重复触发,无非就是冒泡了,如果能阻止事件的冒泡,那应该也可以达到目的。

用.stop修饰符就可以实现效果了。

所以就有了第三步

三、修饰符

1、事件修饰符

.native修饰符

在组件标签上使用的时候,就要加上native修饰符,这样就可以像原生标签一样使用了。
原生标签,则不允许添加该修饰符。element组件也可以用。
 
.stop修饰符

阻止事件继续传播,也就是阻止冒泡了。

.prevent修饰符

阻止标签的默认行为,比如a标签的自动跳转,form标签中的submit按钮(如果form没
有submit事件,那第一个不是type为button的按钮,也会触发这个自动刷新),自动
刷新网页,网页右键单机,弹出的默认菜单。

.capture修饰符

使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理。
简单的讲,就是加了.capture修饰符的,会先优先处理这个标签的事件,不管它里面是否还
包含了其他标签。

.once修饰符

事件只触发一次。

.self修饰符

只有在`点击事件绑定的元素`与`当前被点击元素`一致时才触发点击事件。

.passive修饰符

告诉浏览器不阻止事件的默认行为,尽早告诉,可有效提供移动端性能。




使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。
举个例子:
用v-on:click.prevent.self会阻止所有的点击,
而 v-on:click.self.prevent 只会阻止对元素自身的点击。
复制代码

2、v-model的修饰符

 .lazy修饰符
 
 常用在input框,使用后,只有当input框失去焦点or用户回车了,才会修改同步数据,
 应用场景,避免每次输入都会和后台数据绑定的情况。
 
 .number修饰符
 
 当用户在input中输入数字时,浏览器会默认将输入的数字转化为string类型,使用
 number修饰符来将输入的数字转为number类型。
 
 .trim修饰符
 
 用户可能输入的字符串中含有空格,这样系统在处理时可能会出现错误。使用trim
 修饰符来去掉字符串首部或者尾部的所有空格。
 
 
复制代码

3、键盘事件修饰符

@keyup.enter   可以捕获回车键事件
.tab  制表符事件
.delete (捕获“删除”和“退格”键)
.esc  esc事件
.space  空格事件
.up   上下左右事件
.down
.left
.right


特殊的修饰键

.ctrl
.alt
.shift
.meta

<!-- 按下Alt + 释放C触发 -->
<input @keyup.alt.67="clear">

<!-- 按下Alt + 释放任意键触发 -->
<input @keyup.alt="other">

<!-- 按下Ctrl + enter时触发,“在十进制下,回车键ASCII码为“13” -->
<input @keydown.ctrl.13="submit">
复制代码

Snipaste_2022-07-19_15-30-26.jpg

ps:又可以水一篇


作者:地霊殿__三無
链接:https://juejin.cn/post/7124650150261161992
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:el,恶补,修饰符,点击,事件,按钮,click,row
From: https://www.cnblogs.com/Earth-Hall-Sanwu/p/16657389.html

相关文章

  • Sentinel-3(哨兵3)数据处理
     Sentinel-3(哨兵3)卫星是欧空局(ESA)和欧洲委员会(EC)卫星项目,该卫星搭载OLCI(海陆色度仪)和SLSTR(海陆表面温度辐射计),可提供全球多光谱中等分辨率海洋/陆地观测能力。海洋方面,可......
  • 基于Selenium Grid搭建自动化并行执行环境
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试Selenium......
  • 关于model.fuse().eval()理解
    问题描述:在学习yolov5过程中,我们可以通过如下代码进行模型导入,为什么要使用fuse()和eval()?defget_model(weights):#fuseconv_bnandrepvgg#onlyfu......
  • 关于yolov5官方项目训练的模型加载时报no module named models..Model/common
    出现该报错的原因是:训练保存的模型里包含了网络结构,结构的model类直接包含了路径地址model.yolo.Model解决办法就是重新在官方项目代码中加载模型,并再次只保存其中的模型......
  • 拿来即用的下载Excel模板
    模板导出拿来即用 @PostMapping("/templateExport") @ApiOperation(value="模板导出",notes="作者:yysd") publicReturnObjectexportAuditContent(HttpServletRe......
  • Excel导入操作,poi
    导入操作,仅供参考,具体情况具体而论@OverridepublicReturnObjectinforImport(LogySbjsJdsbqxxxPartsentity,HttpServletRequestreq,MultipartFilefile) th......
  • 关于如何在 MecSimCalc 上使用 if、elif、else 语句的 Python 教程
    关于如何在MecSimCalc上使用if、elif、else语句的Python教程本教程概述了如何在线使用if、elif、else语句MecSimCalc.这是通过一个示例应用程序完成的,该应用程......
  • Vite Build Development Environment
    Normally,vitebuildbydefaultisbuildingtheproductionenvironmentonly,butwestillcanmakeitbuilddevelopmentenvironmentbyadding--modedevelopme......
  • 16.普通参数与基本注解-@ModelAttribute
    抄的网上的分析,但是也要用自己的话理解一遍用法1:用在入参运用在参数上,会将客户端传递过来的参数按名称注入到指定对象中,并且会将这个对象自动加入ModelMap中,便于View层使......
  • Handel 分类中的不平衡数据
    Handel分类中的不平衡数据预测我想知道的他们中的大多数人没有可预测的信息。例如预测欺诈的发生,感染预后或简而言之“因为东西少所以我想知道更多。”在这项工作中......