源码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>事件的基本使用</title>
<!-- 引入Vue -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!--
事件的基本使用:
1.使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;
2.事件的回调需要配置在methods对象中,最终会在vm上;
3.methods中配置的函数,不要用箭头函数!否则this就不是vm了;
4.methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例对象;
5.@click="demo" 和 @click="demo($event)" 效果一致,但后者可以传参;
-->
<!-- 准备好一个容器-->
<div id="root">
<h2>欢迎来到{{name}}学习</h2>
<!-- 当我们点击 button按钮的时候,就会调用Vue实例中的 shoInfo()函数,不用传参的时候可以不加小括号() -->
<button v-on:click="showInfo">点我提示信息</button>
<!-- 将上面的 v-on: 简写为 @-->
<button @click="showInfo1">点我提示信息1(不传参)</button>
<!-- 目标:为调用方法传递一个数字66。为不搞丢event事件的同时,传递数字66,那么就需要在传参的时候同时把event传递进去。 -->
<button @click="showInfo2($event,66)">点我提示信息2(传参)</button>
</div>
</body>
<script type="text/javascript">
Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。
const vm = new Vue({
el:'#root',
//注:只有写在 data{}中的属性,Vue才会为该属性写数据代理和数据劫持。
data:{
name:'尚硅谷',
},
//配置项methods
methods:{
//直接写方法名(){}
//错误传参举例:
//showInfo(a,b,c,d){
//正确写法:需要传入 event事件对象.
showInfo(event){
//console.log(a,b,c,d)
console.log(event.target) //event.target 事件目标,此时就是调用showInfo()函数的按钮
console.log(event.target.innerText) //获取事件目标中的元素中的文字
console.log(this) //可以获取的是当前方法所在的配置项的 Vue实例 vm,即:此处this指的是 vm
//alert('同学你好')
},
showInfo1(event){
// console.log(event.target.innerText)
// console.log(this) //此处的this是vm
alert('同学你好!')
},
showInfo2(event,number){
console.log(event,number)
// console.log(event.target.innerText)
// console.log(this) //此处的this是vm
alert('同学你好!!')
}
}
})
</script>
</html>