Vue2.0 - 事件监听(点击-双击-鼠标事件)和事件修饰符(once:prev:stop)

发布时间:2018-09-10 编辑:小张个人博客 查看次数:6966

Vue 事件处理方法

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

v-on:click 单击事件

 <button class=" btn btn-info"  v-on:click="add(1)"> + + </button>
 <button class=" btn btn-danger " v-on:click="subtract(1)"> - - </button>

v-on:dblclick 双击事件

<!-- 缩写语法 -->
 <button class=" btn btn-info"  @dblclick="add(5)"> + + </button>
 <button class=" btn btn-danger " @dblclick="subtract(5)"> - - </button>

v-on:mousemove\mouseout  鼠标事件

<div class="canvas" @mouseout ="update">
     {{ x }} - {{ y }}
</div>
new Vue({
el:".vue-app",
	data:{
	    age: 25,
		x:0,
		y:0
	},
	methods:{
		add:function(inc){
		      this.age += inc;
		},
		subtract:function(dec){
		   this.age -= dec ;
		},
		update:function(event){
		 //   console.log(event);
		   this.x = event.offsetX;
		   this.y = event.offsetY;
		}
	}
});	

然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。因此 v-on 还可以接收一个需要调用的方法名称。

Vue.js 事件修饰符

在事件处理程序中尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。

.stop

.prevent

.capture

.self

.once

.passive

<!-- 阻止事件继续传播 -->
<p v-on:mousemove.stop> Stop </p>

<!-- 点击事件将只会触发一次 -->
<button class=" btn btn-info"  v-on:click.once="add(1)"> + + </button>

 <!--点击 A 链接弹出提示内容,不再重载页面 -->
<p><a v-on:click.prevent ="alert() "  href="http://blog.023xs.cn">blog.023xs.cn</a></p>

注意事项:使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

Vue 按键修饰符

在监听键盘事件时,我们经常需要检查常见的键值。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 用户输入内容时,按下Enter 键才会触发事件 -->
<input v-on:keyup.enter="Email"   type="text" class="form-control"   placeholder="Email">

<!-- 用户输入内容时,按下删除”或“退格”键 键才会触发事件 -->
<input v-on:keyup.delete="Email"   type="text" class="form-control"   placeholder="Email">
	

全部的按键别名:

.enter

.tab

.delete (捕获“删除”和“退格”键)

.esc

.space

.up

.down

.left

.right

记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名,当然也可以通过全局 config.keyCodes 对象自定义按键修饰符别名。




出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号