<!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>
</head>
<body>
<div id="root">
<h2>欢迎来学习{{name}}</h2>
<button v-on:click="showInfo">点我提示信息(不传参)</button>
<button @click="showInfo2(66,$event)">点我提示信息1(传参)</button>
</div>
<script src="../js/vue.js"></script>
<script type="text/javascript">
Vue.config.productionTip = false;
new Vue({
el: '#root',
data: {
name: 'vue'
},
methods: {
showInfo(event) {
console.log(event.target.innerText);
console.log(this);//此处的this指vue实例。
alert('同学你好');
},
showInfo2(number,event){
console.log(number,event);
}
}
})
</script>
</body>
</html>
知识点
1:事件默认接收一个参数,事件对象Event, 常用到的属性target,拿到事件目标,就是绑定事件的那个dom元素。
2:vue模板只能用vue实例里面的东西。比如把方法写到全局,仍然会检测说没有定义。
3:事件的基本使用
(1):使用v-on:xxx或者@xxx绑定事件,xxx是事件名称。
(2):事件的回调需要配置到methods,最终会在vm实例上。
(3):methods中配置的函数,不要使用箭头函数!,否则this指向的就不是vm实例。
(4):methods中配置的函数,都是vm被所管理的函数,this的指向是vm或组件实例对象。
(5):@click="demo"和@click="demo($event)"效果一致,只是后者可以传参。
网友评论