事件监听
1、v-on的参数传递问题:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="../js/vue.js"></script> </head> <body> <div id ="app"> <!-- 1、在事件监听,并且写的方法中并没有参数,则()可以直接省略使用 --> <!-- <button @click="btnclick1()">按钮1</button> <button @click="btnclick1">按钮1</button> --> <!-- 此时在事件监听并且方法中没有参数,则可以省去(),两者均可以实现 --> <!-- 2、在时间监听并且方法中需要有参数的情况下 --> <!-- 正常传入参数,传出的是正常的值 不传入参数,只是添加(),出现的是undeined。表示未定义 即不书写参数又不加入() --> <!-- ,此时传入的是时间发生的请款 --> <!-- <button @click="btnclick2(123)"> 按钮2</button> <button @click="btnclick2()">按钮2</button> <button @click="btnclick2">按钮2</button> --> <!-- 3、在即需要传入的参数又需要时间点击的各种情况,则使用$event --> <button @click="btnclick3(123,$event)">按钮3</button> <!-- 在急需要传入参数要需要事件单击的时间。 如果直接不写括号或者是不写入参数,则会发生错误。若是传入一个参数,则是会 显示参数和undefined.如果要需要即实现参数又是实现鼠标移动的时间,则是需要$event --> </div> <script> //创建Vue实例,得到 ViewModel var vm = new Vue({ el: '#app', data: {}, methods: { btnclick1(){ console.log('btnclick1') }, btnclick2(abc){ console.log('---------'+abc); }, btnclick3(abc,event){ console.log('++++++++++++++',abc,event); } } }); </script> </body> </html>
2、v-on修饰符的使用
.stop:阻止的当前事件的发生
<body> <div id ="app"> <div @click="divclick"> aaaaaaaaa <button @click.stop="btnclick">按钮1</button> <!-- 使用.stop阻止了当前事件的发生 --> </div> </div> <script> //创建Vue实例,得到 ViewModel //v-on的修饰符的使用 // 1、.stop的使用 var vm = new Vue({ el: '#app', data: {}, methods: { btnclick(){ console.log('btnclick'); }, divclick(){ console.log('divclick'); } } }); </script> </body>
.prevent的使用:阻止事件的提交使用
<form action="baidu"> <input type="submit" value="提交" @click.prevent="submitclick"> <!-- 但是出现没有文件被移交别处 --> <!-- 3、监听某个键帽的点击 --> <br> </form>
@click.enter:表示只监听按下enter下的键
<input type="text" @keyup.enter="keyup"> <button></button>
.once修饰符的使用:表示只触发一次
<!-- 4、.once:表示只触发事件一次 --> <button @click.once="btnclick2"> 按钮2</button>