赞
踩
在VUE里面,事件处理,直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称。我们需要注意一下:@click和v-on:click是一样,只不过形式不一样,本质是一样的,前者是后者的简写形式。现在我们看下具体代码:
<!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>事件处理</title> <script type="text/javascript" src="../vue_js/vue.js"></script> </head> <body> <div id="d"> <h1>欢迎来到{{provinceCity}}</h1> <button v-on:click = "btnGet">请点击按钮将会弹出惊喜!</button> <button @click = "btnGet1(1,3,4)">请点击按钮将会弹出惊喜!</button> <button @click = "btnGet2">请点击按钮将会弹出惊喜242433</button> <button @click = "btnGet3($event,26)">点击方法3</button> <button @click = "btnGet4">点击方法4</button> </div> <script> Vue.config.productionTip = false; let str = "湖北省武汉市"; /* 这里注意下,@click和v-on:click是一样, 其中前者是后者的简单形式 */ const vm = new Vue({ el:'#d', data:{ provinceCity:str }, methods:{ btnGet(){ alert("欢迎来到这里,这里将会有惊喜"+str); }, btnGet1(a,b,c){ console.log(a+","+b+","+c); }, btnGet2(x,y,z){ //console.log("这是方法2"); /* 这里可以得出一个结论,那就是点击事件的方法没有传入实参, 第一个参数一般默认event,也就是说方法里面默认有一个event, */ console.log(x+","+y+","+z);//[object MouseEvent],undefined,undefined }, btnGet3(event,num){ /* 这里注意下.事件的回调需要配置在methods对象中,最终会在vm上 其中中配置的函数,不要用箭头函数!否则this就不是vm了, methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象 */ console.log(event+"---"+num);//[object MouseEvent]---26 console.log(this);//这里,this指的是vm }, btnGet4(){ /* 这里通过event调用target来获取button的文本内容, 这里的target指的是button */ console.log(event.target.innerText);//点击方法4 } } }); console.log(vm); </script> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。