事件绑定
vue如何处理事件?
v-on / 缩写@
示例:
<!-- 方法处理器 --> <button v-on:click="doThis"></button> <!-- 动态事件 (2.6.0+) --> <button v-on:[event]="doThis"></button> <!-- 内联语句 --> <button v-on:click="doThat('hello', $event)"></button> <!-- 缩写 --> <button @click="doThis"></button> <!-- 动态事件缩写 (2.6.0+) --> <button @[event]="doThis"></button> <!-- 停止冒泡 --> <button @click.stop="doThis"></button> <!-- 阻止默认行为 --> <button @click.prevent="doThis"></button> <!-- 阻止默认行为,没有表达式 --> <form @submit.prevent></form> <!-- 串联修饰符 --> <button @click.stop.prevent="doThis"></button> <!-- 键修饰符,键别名 --> <input @keyup.enter="onEnter"> <!-- 键修饰符,键代码 --> <input @keyup.13="onEnter"> <!-- 点击回调只会触发一次 --> <button v-on:click.once="doThis"></button> <!-- 对象语法 (2.4.0+) --> <button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
事件的基本使用
来看一个例子
// html <input type="text" v-model="num"> <button v-on:click="doThis()">点击</button> // js <script> // 新建VM实例 var vm = new Vue({ el: "#app", data: { num: 0 }, methods: { doThis() { this.num++; // 这里的this指向的是vm实例
console.log(this === vm); // true } } }); </script>
上面代码,通过点击按钮,改变输入框中相应的值。
事件函数的调用方式
1、直接绑定函数名称
<button v-on:click="doThis">点击</button>
2、调用函数
<button v-on:click="doThis()">点击</button>
事件函数的参数传递
1、普通函数和事件对象
<!-- 注意:$event是固定写法,代表事件参数对象,并且只能放置在参数列表的最后一位--> <button v-on:click="doThis('wade',$event)">点击</button>
来看一个例子
// html <div id="app"> <h1 v-text="name"></h1> <button v-on:click="doThis('wade',$event)">点击</button> </div> // js <script> // 新建VM实例 var vm = new Vue({ el: "#app", data: { name: 'james', }, methods: { doThis(name,e) { this.name = name;
console.log(e.target.innerHTML); // 点击 } } }); </script>
上面代码,通过参数传递将页面显示的名字更改成另一个人的名字。并且通过事件源对象打印目标对象的内容。
结论:1、如果事件直接绑定函数名称,那么会默认传递事件对象作为事件函数的第一个参数。 2、如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示$event传递