vue.js -- 事件绑定

2023-11-10

绑定事件

定义事件

代码演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue事件绑定</title>
    <!-- 使用CDN引入Vue -->
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
    <script>
        const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                handleClick(){
                    this.content++;
                    console.log(this.content);
                }
            },
            template:`<div @click="handleClick">{{content}}</div>`
        })
        const vm = app.mount('#root');
    </script>
</body>
</html>

页面效果:
在这里插入图片描述

直接写表达式

代码演示:

		const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            template:`<div @click="content++">{{content}}</div>`
        })

页面效果和定义事件相同。

获取事件对象event

代码演示:

 const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                handleClick(event){
                    this.content++;
                    console.log('content');
                    // MouseEvent 原生的event对象
                    console.log(event);
                    // 事件挂载的DOM节点
                    console.log(event.target);
                    // 事件触发的DOM节点
                    console.log(event.currentTarget);
                }
            },
            template:`<div @click="handleClick">{{content}}</div>`
        })

页面效果:

在这里插入图片描述

获取自定义参数

代码演示:

 			const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                handleClick(num){
                    this.content += num;
                    console.log(this.content);
                }
            },
            template:`<div @click="handleClick(5)">{{content}}</div>`
        })

页面效果:
在这里插入图片描述

获取参数和事件对象event

代码演示:

 const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                handleClick(num, event){
                    this.content += num;
                    console.log(this.content, event);
                }
            },
            template:`<div @click="handleClick(5, $event)">{{content}}</div>`
        })

页面效果:
在这里插入图片描述

事件绑定多个函数

代码演示:

const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                handleClick(){
                    console.log('handleClick');
                },
                handleClick1(){
                    console.log('handleClick1');
                }
            },
            template:`<div @click="handleClick(), handleClick1()">{{content}}</div>`
        })

页面效果:
在这里插入图片描述

修饰符

事件修饰符

事件修饰符 描述
.stop 防止事件冒泡
.prevent: 阻止默认事件
.capture: 按照捕获的方式触发函数,从外向内执行
.self: 只触发自己的事件,不包含子元素
.once: 只触发一次

stop修饰代码演示:

const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                stopClick(){
                    console.log('我是内层div');
                },
                handleClick(){
                    console.log('我是外层div');
                }
            },
            template:`
                <div @click="handleClick">
                    <div @click.stop="stopClick">{{content}}</div>
                </div>
                `
        })

页面效果:
在这里插入图片描述

按键修饰符

只要按下对应的按键就能触发的事件(多按也能触发)

按键修饰符 描述
.enter 回车
.delete 删除
.tab 制表符
.esc 退出
.space 空格
.left 方向键:左
.up 方向键:上
.right 方向键:右
.down 方向键:下

代码演示:

		const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                enterClick(){
                    console.log('按enter键时点击触发')
                },
                altClick(){
                    console.log('按alt键时点击触发')
                },
                ctrlClick(){
                    console.log('按ctrl键时点击触发')
                }
            },
            template:`
            <div>
                <div class="content">
                    <!-- 按enter键时点击触发 -->
                    <button @click.enter='enterClick'>enter</button>
                </div>
                <div class="content">
                    <!-- 按alt键时点击触发 -->
                    <button @click.alt='altClick'>alt</button>
                </div>
                <div class="content">
                    <!-- 按click键时点击触发 -->
                    <button @click.ctrl='ctrlClick'>ctrl</button>
                </div>
		    </div>
                `
        })

页面效果:
在这里插入图片描述

鼠标修饰符

按下对应的鼠标按键就能触发事件

鼠标修饰符 描述
.left 鼠标左键
.right 鼠标右键
.middle 鼠标中键

代码演示:

		const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
           methods:{
                leftClick(){
                    console.log('点击鼠标左键时触发')
                },
                middleClick(){
                    console.log('点击鼠标中键时触发')
                },
                rightClick(){
                    console.log('点击鼠标右键时触发')
                }
            },
            template:`
            <div>
                    <div class="content">
                    <!-- 点击鼠标左键时触发 -->
                    <button @click.left='leftClick'>left</button>
                </div>
                <div class="content">
                    <!-- 点击鼠标中键时触发 -->
                    <button @click.middle='middleClick'>middle</button>
                </div>
                <div class="content">
                    <!-- 点击鼠标右键时触发 -->
                    <button @click.right='rightClick'>right</button>
                </div>
		    </div>
		    </div>
                `
        })

页面效果:
在这里插入图片描述

精确修饰符

.exact 只有精确按下对应的按键才能触发的事件。

代码演示:

		const app = Vue.createApp({
            data(){
                return {
                    content: 0
                }
            },
            methods:{
                enterClick(){
                    console.log('只按enter键时点击触发')
                },
                altClick(){
                    console.log('只按alt键时点击触发')
                },
                ctrlClick(){
                    console.log('只按ctrl键时点击触发')
                }
            },
            template:`
            <div>
                <div class="content">
                    <!-- 只按enter键时点击触发 -->
                    <button @click.enter.exact='enterClick'>enter</button>
                </div>
                <div class="content">
                    <!-- 只按alt键时点击触发 -->
                    <button @click.alt.exact='altClick'>alt</button>
                </div>
                <div class="content">
                    <!-- 只按click键时点击触发 -->
                    <button @click.ctrl.exact='ctrlClick'>ctrl</button>
                </div>
		    </div>
                `
        })

页面效果:
在这里插入图片描述

(完)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue.js -- 事件绑定 的相关文章

  • 解析:Promise.when 有很多 Promise?

    解析文档 https www parse com docs js symbols Parse Promise html when https www parse com docs js symbols Parse Promise html
  • 该脚本在 IE 中不起作用。我该如何修复它?

    有一个脚本可以根据用户的显示器屏幕分辨率更改页面模板 但是 它在 IE 中不起作用 请告知如何修复它 table align center tr td head td tr tr td nbsp td td nbsp td td nbsp
  • 与拉斐尔的路径位置

    我如何使用 raphael js 更改路径位置 很奇怪的是 明显的方法不起作用 var p paper path some path string p attr fill red p attr x 200 y 100 not working
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • 热成像调色板

    自热成像早期以来 红外热像仪经常使用独特的调色板 从黑色到蓝色 品红色 橙色 黄色到亮白色 这个调色板通常被称为Iron or Ironbow 这是使用前视红外相机拍摄的图像的典型假彩色可视化 来源 维基百科 术语科特 http commo
  • 如何确保循环完成后执行语句?

    下面是我的代码的快照 routes index js exports index function req res var results new Array for var i 0 i lt 1000 i do database quer
  • YouTube 播放器 API:getDuration()、getCurrentTime()、getVideoData() 不起作用

    对于我的应用程序 我尝试使用 YouTube Iframe 播放器 API 来播放视频 并允许用户更改视频而无需重新加载页面 我通过使用来实现这一点player loadVideoById video id 方法 通过YouTube视频id
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • Safari 和 Edge 中的 audioContext.copyToChannel() 替代方案

    Safari 和 Edge 都不支持audioContext copyToChannel 函数用自定义内容填充audioBuffer 还有其他方法吗 就我而言 我想创建一个脉冲响应 用该响应填充缓冲区 并将一些声音与该缓冲区进行卷积 对于
  • 谷歌colab录音,如何实现更精确的方式告诉用户开始对着麦克风说话

    我正在尝试创建一个为机器学习项目录制音频的程序 我想使用 google colab 这样人们就不必在他们的系统上安装或运行任何东西 我在网上找到了这个录制和播放音频的示例 单元格 1 包含用于录制音频的 js 代码和用于将其转换为字节对象的
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • Cytoscape 布局 - 处理锁定节点

    我正在使用 vue cytoscape 渲染图形并浏览树状数据结构 我的目标是扩展父节点并保持它们在图中的位置 我想简单地添加新的子节点 我的方法是锁定当前节点 添加子节点并解锁节点 this cy nodes lock for let d
  • 使用添加“title”属性换行符 到 JSX 元素

    我知道我可以在 HTML 中添加换行符title属性使用 10 但 React 避免了这一点 例如 这是一个 React 组件 其中包含一个标准的 未由 React 处理的组件title包含换行符的属性 并且可以在浏览器中看到效果 但是如果
  • onDeviceReady 未在 PhoneGap hello world 应用程序中触发

    我正在尝试做一个简单的警报 测试 应用程序 但事件没有被触发 这是代码 function onLoad document addEventListener deviceready onDeviceReady false Cordova is
  • 如何用 GreaseMonkey 替换 onclick 事件?

    该网站有一个图片库 每次我单击缩略图时 它都会在新选项卡中打开 URL 不是因为我将 Firefox 设置为在新选项卡中打开链接 我只想在同一窗口中打开 URL 缩略图的示例如下 span class thumb a href post i
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 将 async 和await 与export const 一起使用

    我无法完成这项工作 它说 await 是一个保留字 是的 当然是 而且我想使用它 怎么了 export const loginWithToken async gt return dispatch gt dispatch type SESSI
  • 带数字键的 Immutable.js 映射(包括性能测试)

    我在 React Native 应用程序中将 Immutable js 与 Redux 结合使用 元数据 例如查找表 是从服务器获取的 并作为 Immutable Map 保存在应用程序本地 查找值的键是整数 数据库中的主键 当我获取数据时
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到

随机推荐

  • 2021 字节跳动面试总监首发 1121 道 LeetCode 算法刷题笔记(含答案)

    关于算法刷题的困惑和疑问也经常听朋友们提及 这份笔记里面共包含作者刷 LeetCode 算法题后整理的数百道题 每道题均附有详细题解过程 很多人表示刷数据结构和算法题效率不高 甚是痛苦 有了这个笔记的总结 对校招和社招的算法刷题帮助之大不言
  • Windows与网络基础-1-2-虚拟机安装Windows10/ server2016

    目录 一 下载虚拟机软件 1 1新建虚拟机 1 2选择操作系统类型和windows版本 1 3自定义虚拟机名称 1 4设置最大磁盘大小 1 5配置内存和处理器 1 6挂载镜像文件 1 7进入window配置界面 二 点击进去按步骤安装即可
  • 常用邮箱工具类

    废话不多说 直接上代码 自个耍 package com example demo util import javax mail import javax mail internet InternetAddress import javax
  • 多线程基础篇(包教包会)

    文章目录 一 第一个多线程程序 1 Jconsole观察线程 2 线程休眠 sleep 二 创建线程 三 Thread类及常见方法 1 Thread 的常见构造方法 2 Thread 的几个常见属性 3 启动线程 start 4 中断线程
  • 宝塔面板忘记用户名,忘记密码怎么办?

    1 重新设置密码找回用户名 情况一 已经修改过用户名和密码 很多网上的解决方法都只是告诉我们进入SSH设置 但是很多小伙伴并不知道怎么进入SSH 导致解决该问题很麻烦 其实我们直接在阿里云中云服务器中的远程连接就可以解决这个问题 第一步 直
  • 利用security.js实现RSA加密

    在项目中遇到要对用户输入的密码进行RSA加密的需求 总结一下实现过程 div div
  • Android和java两平台AES的互相加密解密

    import java io UnsupportedEncodingException import java security InvalidKeyException import java security Key import jav
  • 什么是多态机制?Java语言是如何实现多态的?

    多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用 在编程时并不确定 而在程序运行期间才确定 即一个引用变量到底会指向哪个类的实例对象 该引用变量发出的方法到底调用哪个类中实现的方法 必须由程序运行期间才能决定 因为
  • 计算机系统唯一能识别的不需要翻译,第一章 计算机基础知识06966new.ppt

    第一章 计算机基础知识06966new ppt 第一章 计算机基础知识 2 1 计算机软件系统 输入计算机的信息一般有两类 一类称为数据 一类称为程序 计算机是通过执行程序所规定的各种指令来处理各种数据的 1 指令 是指示计算机执行某种操作
  • IntelliJ IDEA(九) :酷炫插件系列

    最近项目比较忙 很久没有更新IDEA系列了 今天介绍一下IDEA的一些炫酷的插件 IDEA强大的插件库 不仅能给我们带来一些开发的便捷 还能体现我们的与众不同 1 插件的安装 打开setting文件选择Plugins选项 Ctrl Alt
  • 尊云服务器出问题,云服务器用户常见问题

    云服务器用户常见问题 Q 装预装操作系统以后的默认密码是什么 A 默认的密码和云服务器开通时输入的密码是一样的 就是一个用户一个密码 不是固定的 Q 云服务器中如何划分硬盘的分区 A 云服务器系统系统安装后 默认只有一个10G的C盘用于操作
  • Android进阶:架构师花费近一年时间整理出来的安卓核心知识,聪明人已经收藏了!

    我们程序员经常迷茫于有太多东西要学 有些找不到方向 不知所措 很多程序员都愿意说 我想变得更好 但是更好是什么却很模糊 同时我们又不知道该怎么样去做 我们的生命如此短暂 作为程序员的职业生涯可能会更短 所以我们更加需要充分利用工作 工作间隙
  • 踩坑,发现一个ShardingJdbc读写分离的BUG

    前言 最近公司准备接入ShardingJdbc做读写分离了 老大让我们理一理有没有写完数据立马读的场景 因为主从同步是有延迟的 如果写完读取数据走到从库 而从库正好有延迟 没读取到数据 岂不是造成了生产事故 今天我们来看看 Sharding
  • CUDA和TensorRT入门

    CUDA 官方教程 CUDA C Programming Guide nvidia com 一 基础知识 首先看一下显卡 GPU 和CUDA的关系介绍 显卡 GPU和CUDA简介 吴一奇的博客 CSDN博客 延迟 一条指令返回的时间间隔 吞
  • 【无标题】【Atlas 200DK】YOLOv3和YOLOv5部署

    Atlas 200DK YOLOv3和YOLOv5部署 数据集介绍 开发板环境搭建 YOLOv3的部署 模型训练转换 服务器上的结果 开发板上的结果 python部署 c 部署 YOLOv5的部署 模型训练转换 服务器上的结果 开发板上的结
  • python 开发游戏的库有哪些

    在 Python 中 开发游戏的一些常用库有 Pygame 一个用于制作游戏的开源模块 支持多种图像 声音和输入处理 Pyglet 一个跨平台的游戏引擎 支持 OpenGL 图形渲染 PyOpenGL 一个实现了 OpenGL 功能的库 可
  • G2O

    slam十四讲 g2o代码运次错误 error no matching function for call to g2o BlockSolver
  • python中pd读取csv二进制_python用pd.read_csv()方法来读取csv文件

    importpandas as pdprint 取消第一行作为表头 data2 pd read csv rating csv header None print 为各个字段取名 data3 pd read csv rating csv na
  • vue中不同页面设置title和icon

    路由中增加meta对象 path accounting name accounting component gt import pages accounting Accounting vue 记账 meta title 芒果记账 icon
  • vue.js -- 事件绑定

    目录 绑定事件 定义事件 直接写表达式 获取事件对象event 获取自定义参数 获取参数和事件对象event 事件绑定多个函数 修饰符 事件修饰符 按键修饰符 鼠标修饰符 精确修饰符 绑定事件 定义事件 代码演示