关于vue,记录一次修饰符.stop和.once的使用,以及猜想。

news2024/11/26 0:25:32

内置指令 | Vue.js

在vue的api里,关于v-on有stop和once两个事件标签。

  • .stop - 调用 event.stopPropagation()
  • .once - 最多触发一次处理函数。 

原有主要代码和页面效果 (无stop和once):

    ...
        <div class="div" @click="divClick()">
            <p class="p" @click="pClick()"></p>
        </div>
    ...
        <script>
    ...
                divClick(){
                    console.log('div点击了');
                },
                pClick(){
                    console.log('p点击了');
                }
    ...
        </script>

 

.stop

stop用于在页面表单中,只触发子元素,不触发父元素的操作。例如:

        <div class="div" @click="divClick()">
            <p class="p" @click.stop="pClick()"></p>
        </div>

效果如下。p元素(绿区)绑定了pClick的指令,p元素是div元素(背景红区)的子元素,div也绑定了一个事件。点击p元素,div所绑定的事件没有被触发。

 

 .once

once用于在页面表单中,只触发子元素,不触发父元素的操作。例如:



        <div class="div" @click="divClick()">
            <p class="p" @click.once="pClick()"></p>
        </div>

效果如下。p元素(绿区)绑定了pClick的指令,p元素是div元素(背景红区)的子元素,div也绑定了一个事件。点击p元素两次,p所绑定的事件只触发了一次,div所绑定的事件两次被触发。 

.stop.once或者.once.stop:

代码如下:

        <div class="div" @click="divClick()">
            <p class="p" @click.stop.once="pClick()"></p>
        </div>

效果如下:

第一次点击绿区p,只触发了绿区p的事件,没有触发红区div的事件。 

第二次点击绿区p,没有触发了绿区p的事件,但是触发了红区div的事件。 

点击绿区p第三次,同样只触发红区div的事件,不触发绿区p的事件。 

 将.stop.once改成.once.stop得到的也是一样的结果。

        ...
        <div class="div" @click="divClick()">
            <p class="p" @click.once.stop="pClick()"></p>
        </div>
        ...

        ...
        pClick(){
            console.log('p点击了 .once.stop');
        },
        ...

 猜想:

        stop的作用是不触发当前处理函数所在元素的父级元素处理函数,once的作用是最多触发一次处理函数。当.stop.once混用的时候,第一次点击stop和once都对当前元素的函数,其作用范围只在当前元素上。但是第二次点击的时候,stop不再起作用了,父级元素可以被多次触发。

        因此我猜测,once这个修饰符,在第一次点击执行后,对当前元素做了去除操作(不知道是逻辑去除还是物理去除,个人偏向物理)。这个操作不仅会去除该元素绑定的处理函数,还会去除该元素上带有的其他修饰符。

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件</title>
    <script src="../../public/script/vue_2.2.2.min.js"></script>
    <style>
        .div{
            width: 200px;
            height: 200px;
            background-color: red;
            margin-top: 20px;
        }
        .div2{
            width: 200px;
            height: 200px;
            background-color: yellow;
            margin-top: 20px;
        }
        .p{
            width: 100px;
            height: 100px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div id="app">
        <button @click="add('horse',$event)">加一马</button>
        <input type="text" :value="age" />
        <button @click="sub()">减一马</button>

        <div class="div" @click="divClick()">
            <p class="p" @click.once.stop="pClick()"></p>
        </div>

        <div class="div2" @click="divClick()">
            <p @click.stop.once="aClick()" target="_blank">Baidu一下</p>
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                name: 'Calven',
                age: 24,
                wechat: 'CalvenZeng'
            },
            methods: {
                add(msg, event){
                    this.age++;
                    console.log(msg);
                    console.log(event);
                },
                sub(){
                    this.age--;
                },
                divClick(){
                    console.log('div点击了');
                },
                pClick(){
                    console.log('p点击了 .once.stop');
                },
                aClick(){
                    console.log('a点击了');
                    window.open("https://www.baidu.com", "baidu");
                }
            }
        });
    </script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/878082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编写时源码优化插件试验品

我又来倒垃圾啦 自己垃圾桶里的这个&#xff1a;egg language server on VSCode | Framist’s Little House 用蛋消灭魔鬼&#xff01;编写时源码优化插件 egg-language-server &#x1f9ea; in developing Source Code Optimization Tools at Writing-time 特性 demo | 点击跳…

Revit SDK: FindColumns 找到和墙相交的柱子

前言 本文的主要内容是基于 ReferenceIntersector 的一个应用。ReferenceIntersector 的主要作用是找到一条与给定射线相交的各个元素。 内容 ReferenceIntersector namespace Autodesk.Revit.DB {public class ReferenceIntersector : IDisposable{public ReferenceInters…

Playwright快速上手-1

前言 随着近年来对UI自动化测试的要求越来越高&#xff0c;,功能强大的测试框架也不断的涌现。本系列主讲的Playwright作为一款新兴的端到端测试框架,凭借其独特优势,正在逐渐成为测试工程师的热门选择。 本系列文章将着重通过示例讲解 Playwright python开发环境的搭建 …

【瑞芯微RK3588】【部署yolov5】学习资料总结

各类教程 1.官网&#xff1a;瑞芯微RK3588板子NPU的使用&#xff1b; 2. 【实测有用】在PC虚拟机上转换模型&#xff0c;再下载到RK3588板子上部署YOLOv5&#xff1b; 3. 在服务器上转换模型&#xff0c;再下载到RK3588板子上部署YOLOv5&#xff1b; 4. github上的各类资料…

【设计模式】2.策略模式

前言 代码例子是来大话设计模式&#xff0c;本文主要是根据个人的理解&#xff0c;对书中的内容做学习笔记。如果个人理解的有问题&#xff0c;请各位大佬指正&#x1f64f;。 基础遗忘了可以复习一下&#xff1a; 面向对象Java基础 简单了解UML类图 1、业务背景 商场收银软…

双色球彩票系统---(java实现)

双色球彩票系统&#xff1a;需求&#xff1a;投注号码由6个红色号码和1个蓝色球号码组成。红色球号码从1-33中选择&#xff0c;蓝色球号码从1-16当中选择 * 红 蓝 * 一等奖 6 1 * 二等奖 6 0 * 三等奖 5 1 * 四等奖 5 0 * 4 1 * 五等奖 4 0 * …

NPCon:AI模型技术与应用峰会北京站 (参会感受)

8月12日&#xff0c;我有幸参加了在北京皇家格兰云天大酒店举行的“AI模型技术与应用峰会”。 这次会议邀请了很多技术大咖&#xff0c;他们围绕&#xff1a; 六大论点 大模型涌现&#xff0c;如何部署训练架构与算力芯片 LLM 应用技术栈与Agent全景解析 视觉GPU推理服务部署 …

ubuntu部署haproxy

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理. 1、更新系统报 通过在终端中运行以下命令,确保所有系统包都是最新的 sudo apt updatesudo apt upgrade 2、安装Haproxy sudo apt install haproxy 设置开机自动启动haproxy服务 sudo systemctl enable h…

.gitignore匹配规则

目录 1.直接一个名称2.斜杠 /3.符号 *4.问号 &#xff1f;5.感叹号 &#xff01;6.gitkeep 借鉴抖音账号&#xff1a; 渡一前端提薪课 1.直接一个名称 会忽略目录下的所有该名称文件和文件夹&#xff0c;无论嵌套多深。 2.斜杠 / 1.斜杠在开头(/dist)&#xff1a;忽略和.gitig…

开发规范(一):Mysql篇

1. 流程 数据库表结构的修改需要相关人员和Leader一起评审&#xff0c;保证符合涉及规范。 不允许使用root账号&#xff0c;所有开发和测试应当分配指定账号&#xff0c;并授予最小数据库权限 2. 数据库与表规范 表命名规范 常规表表名以 t_开头&#xff0c;t 代表 table 的意思…

Kafka第三课

Flume 由三部分 Source Channel Sink 可以通过配置拦截器和Channel选择器,来实现对数据的分流, 可以通过对channel的2个存储容量的的设置,来实现对流速的控制 Kafka 同样由三大部分组成 生产者 服务器 消费者 生产者负责发送数据给服务器 服务器存储数据 消费者通过从服务器取…

Redis数据结构——压缩列表ziplist

定义 压缩列表ziplist是Redis中列表和哈希键的底层实现方式之一。 当一个列表只包含少量列表项&#xff0c;并且每个列表项要么是小整数值&#xff0c;要么是较短的字符串时&#xff0c;那么Redis就会使用压缩列表来作为列表的底层实现。 另外&#xff0c;当一个哈希表中只包含…

FPGA + WS2812采灯控制

文章目录 一、WS2812C-2020-V11、产品概述2、引出端排列及功能3、数据传输时间4、数据传输方法 二、使用WS2812C显示图片1、静态显示2、动态显示 一、WS2812C-2020-V1 1、产品概述 WS2812C-2020-V1是一个集控制电路与发光电路于一体的智能外控LED光源&#xff1b;其外型采用最…

Docker中Tomcat部署步骤

第一次访问没有东西。

2023牛客暑期多校训练营9 I.Non-Puzzle: Segment Pair(tag:差分)

文章目录 题目大意题解参考代码 题目大意 1 ≤ n , l i , r i ≤ 5 ∗ 1 0 5 1 \leq n,l_i,r_i \leq 5*10 ^5 1≤n,li​,ri​≤5∗105 题解 这题 l / r l/ r l/r 的数据在 5 1 0 5 5\times 10^5 5105 &#xff0c;想到差分。 特殊的是它有两条线段&#xff0c;对于同一个点…

Photoshop窗口->排列菜单下进行匹配缩放/位置/旋转

首先&#xff0c;在Photoshop中打开4张以上图片&#xff0c;并选择“窗口”->“排列”->"四联"&#xff1a; 将鼠标移动至其中一张图片中&#xff0c;按住“Z”键&#xff0c;拖动鼠标&#xff0c;调整图片缩放比例至60.55%&#xff0c; 再选择“窗口”->“…

一篇打通,pytest自动化测试框架详细,从0到1精通实战(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 读取文件 1、读取…

Python中使用隧道爬虫ip提升数据爬取效率

作为专业爬虫程序员&#xff0c;我们经常面临需要爬取大量数据的任务。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#xff0c;这就需要我们使用隧道爬虫ip来绕过这些限制&#xff0c;提高数据爬取效率。本文将分享如何在Python中使用隧道爬虫ip实现API请求与响应的技…

Grounding DINO:根据文字提示检测任意目标

文章目录 1. 背景介绍2. 方法创新2.1 Feature Extraction and Enhancer2.2 Language-Guided Query Selection2.3 Cross-Modality Decoder2.4 Sub-Sentence Level Text Feature2.5 Loss Function3. 实验结果3.1 Zero-Shot Transfer of Grounding DINO3.2 Referring Object Detec…

多线程并发服务器

代码&#xff1a; #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 6666 //1024~49151 #define IP "192.168.122.130" //ifconfig查看本机IP #include <pthread.h> //…