gitHub地址:https://github.com/huangpna/vue_learn/example里面的lesson04
一 vue事件处理方法实现
举个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index1</title> </head> <body> <div id="app1"> <button @click="sayHi">点击一下</button> <!--也可以用v-on指令监听DOM--> </div> </body> <script src="../js/vue.min.js"></script> <script> /** *事件处理方法 -- vue简单方法实现 * */ var vm = new Vue({ el:'#app1', // 在 `methods` 对象中定义方法 methods:{ sayHi:function () { alert("我被点击了"); } } }); </script> </html>
二 方法传参
举个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index2</title> </head> <body> <div id="app2"> <button @click="sayHi('我被点击了')">说我被点击了</button> <!--事件传参--> <button @click="sayHi('您好')">说您好</button> </div> </body> <script src="../js/vue.min.js"></script> <script> var vm = new Vue({ el:'#app2', methods:{ sayHi:function (msg) { alert(msg); } } }); </script> </html>
三 vue访问原生DOM事件
举个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index3</title> </head> <body> <div id="app3"> <button @click="sayHi('我被点击了',$event)">说我被点击了</button> <!--这里使用@--> <div style="height: 100px;width: 100px;background-color: red;" @mouseover="over('鼠标从我上面滑过',$event)"> 鼠标从我上面滑过试试 </div> </div> </body> <script src="../js/vue.min.js"></script> <script> var vm = new Vue({ el:'#app3', methods:{ //这里使用methods sayHi:function (msg,$event) { alert(msg+$event); //弹出我被点击了,事件是[object MouseEvent] }, over:function (msg,$event) { alert(msg+$event); //弹出鼠标从我上面滑过,事件是[object MouseEvent] } } }); </script> </html>
四 事件修饰符
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index4</title> </head> <body> <div id="app4"> <button @click.stop="sayHi('你好')">说你好</button> <!-- 阻止单击事件冒泡 原生事件:e.stoppropagation() --> <button @click.prevent="sayHi('你好')">说你好</button> <!-- 提交事件不再重载页面 阻止默认事件 --> <button @click.stop.prevent="sayHi('你好')">说你好</button> <!-- 阻止单击事件冒泡和提交事件不再重载页面 --> <button @click.capture="sayHi('你好')">说你好</button> <!-- 添加事件侦听器时使用 capture 模式 --> <button @click.self="sayHi('你好')">说你好</button> <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 --> <div @keyup.13="sayHi('你好')">说你好</div> <!-- 只有在 keyCode 是 13 时调用 vm.submit() --> </div> </body> <script src="../js/vue.min.js"></script> <script type="text/javascript"> var myVue = new Vue({ el: '#app4', methods: { //这里使用methods sayHi: function (message) { alert(message) } } }) </script> </html>
五 系统修饰符(键盘事件)
<template> <div> <label>enter键: <input type="text" @keyup.enter="sayHi"/> </label> <label>down键: <input type="text" @keyup.down="sayHi"/> </label> <label>up键: <input type="text" @keyup.up="sayHi"/> </label> <label>left键: <input type="text" @keyup.left="sayHi"/> </label> <label>right键: <input type="text" @keyup.right="sayHi"/> </label> </div> </template> <script> export default { data(){ return{ } }, methods:{ sayHi:function () { alert("我被点击了"); } } } </script>
配置键盘码(自定义):Vue.config.keyCodes.a=65 @keyup.a
六 鼠标按键修饰符
.left
.right
.middle
更多修饰符,之后工作中遇到一一实践。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构