Vue之v-on事件修饰符的含义及使用

news/2024/10/25 8:17:58/

背景:Vue 拆封了一个组件,在组件里面会使用一个方法来改变父组件传过来的值,

但是在子组件里面操作父组件的数据变更,实在比较麻烦(因为单向数据流),

So 能不能直接在组件上面绑定事件方法呢,因此就在封装的组件上面写了 :@click="getDataList"

    <DefaultCompv-if="dataList.length > 0":dataList="dataList"@click="getDataList"/>

但是绑定的 click 方法会不生效,So 要想解决,就需要用到

v-on 事件修饰符 的 .native 了 , 接下来就来讲解一下各修饰符的含义及使用。


Vue 中绑定事件 v-on:事件类型="方法" ,v-on 简写 @


v-on 事件修饰符

<!-- v-on  指令的修饰符 :.stop  阻止事件冒泡.capture  事件进行捕获.prevent  阻止默认事件.once  事件只会执行一次.self  事件之作用给标签本身
-->
.native   侦听组件根元素上的原生事件
  • 事件修饰符

  用来处理事件的特定行为

  • 1、<!-- 阻止冒泡 .stop -->

  <button @click.stop = "doThis"></button>

只知作用为:阻止事件冒泡,不知其具体如何使用。

下面来举个栗子:就是外层大的 Div 盒子本身有绑定了一个 click 点击事件,

但是如果内层有一个小的 div 盒子也绑定了一个 click 点击事件的话,

点击小盒子 div 时,会同时触发 大、小盒子身上的两个事件,容易造成交互紊乱。

所以此时就需要在小盒子 div 的事件上添加一个 .stop 修饰符来阻止 大盒子 的事件触发,

让只点击小盒子的 click 事件单独触发,而不触发大盒子身上的点击事件。

<template><div @click="bigClickEvent"><!-- 内层小盒子div需要加.stop来阻止事件冒泡以免大、小盒子的事件同时触发 --><div @click.stop="smallClickEvent"></div></div>
</template>

  • 2、<!-- 阻止默认行为 .prevent -->

  <a @click.prevent = "doThis"></a>

  • 3、<!-- 只执行一次 .once -->

  <div @click.once = "incr( )">自增一下</div>

  • 4、<!-- 绑定的元素本身触发时才触发回调 .self -->

  <ul @click.self = "incr( )">

    <li>你好世界</li>

  </ul>

  • <!--  串联修饰符 -->

  <button @click.stop.prevent = "doThis"></button>


@click.native中 .native 的含义与使用

当你给一个 vue 组件绑定事件的时候,要加上 native ,

如果是普通的 html 元素,就不需要

<template><div id="app"><ButtonComp @click.native = 'goToNext'>点击跳转</ButtonComp></div>
</template><script>
import ButtonComp from '../components/ButtonComp'export default{components:{ ButtonComp },methods: {goToNext() {console.log('Go to next');},},
}
</script>

So,在 组件上 加上 .native 修饰符 就可以使用 methods 内绑定的对应方法了


http://www.ppmy.cn/news/1431777.html

相关文章

HCIP-Datacom-ARST必选题库_22_SDWAN【1道题】

一、单选 1.SD-WAN解决方案适合如下哪个场景? 企业分支互联 企业数据中心网络内部互联 企业园区无线网络部署 略

使用OpenCV计算滑块缺口

1.参考文章:https://blog.csdn.net/qq_27371025/article/details/133072065 2.实现过程&#xff1a;接口中传入base64 图片&#xff0c;base64转化为image &#xff0c;通过图片获取缺口信息 实现步骤&#xff1a; 2.1 安装&#xff1a;cv2 opencv-python 是 OpenCV&#xff08…

Java 网络编程之TCP(一):基于BIO

环境&#xff1a; jdk 17 IntelliJ IDEA 2023.1.1 (Ultimate Edition) Windows 10 专业版 22H2 TCP&#xff1a;面向连接的&#xff0c;可靠的数据传送协议 Java中的TCP网络编程&#xff0c;其实就是基于常用的BIO和NIO来实现的&#xff0c;本文先讨论BIO&#xff1b; BIO…

uniapp微信小程序分包

一、创建分包文件夹subPack 二、将页面文件放入分包文件夹中 启动页面和导航tabBar页面不要放入分包文件夹中 三、配置pages.json 四、效果

1.微服务介绍

完整的微服务架构图 注册中心 配置中心 服务集群 服务网关 分布式缓存 分布式搜索 数据库集群 消息队列 分布式日志服务 系统监控链路追踪 Jenkins docker k8s 技术栈 微服务治理&#xff1a; 注册发现、远程调用、负载均衡、配置管理、网关路由、系统保护、流量…

python借助elasticsearch实现标签匹配计数

给定一组标签 [{“tag_id”: “1”, “value”: “西瓜”}, {“tag_id”: “1”, “value”: “苹果”}]&#xff0c;我想精准匹配到现有的标签库中存在的标签并记录匹配成功的数量。 标签id(tag_id)标签名(tag_name)标签值(tag_name )1水果西瓜1水果苹果1水果橙子2动物老虎 …

Vue 3 + TypeScript + Vite 2024年4月最新管理系统基建

Vue 3 TypeScript Vite 2024年4月最新管理系统基建 相关依赖 vue: ^3.4.21vite: ^5.2.0typescript: ^5.2.2eslint: ^9.0.0 1. 初始化项目 1.1 node版本要求 node: v18.17.1 1.2. 创建项目 使用 PNPM: # 创建项目 pnpm create vite vue3-element-template --template …

【C++风云录】粒子魔法大全:打造惊艳视觉效果的工具和引擎

从闪光到爆炸&#xff1a;深入了解粒子系统和特效工具 前言 本文将介绍多种用于创建粒子系统和特效的软件开发工具和引擎。这些工具涵盖了从基础到高级的应用&#xff0c;有助于开发人员实现各种视觉效果。 欢迎订阅专栏&#xff1a;C风云录 文章目录 从闪光到爆炸&#xff…