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; 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
更多修饰符,之后工作中遇到一一实践。