vue.js事件处理器是什么


Posted in Javascript onMarch 20, 2017

监听事件

可以用v-on指令监听DOM事件来触发一些javascript代码。

demo:

<div v-on:click="++counter">点击,增加1</div>
<span>{{counter}}</span>
data:{

counter:0

}

方法事件处理器

许多事件处理器的逻辑都很复杂,所以直接把javaScript代码写在v-on指令中是不可行的。因此v-on可以接收一个定义的方法来调用

<div v-on:click="counter()">点击,增加1</div>
<span>{{counter}}</span>
data:{

counter:0

},

method:{


counter:function(){


this.counter++;


}

}

有时也需要在内联语句处理器中访问原生DOM事件,可以用特殊变量$event把它传入方法:

$event 原生事件对象

事件修饰符
在事件处理程序中调用event.preventDefault()或event.stopPropagagation()是非常常见的需求。尽管我们可以在methods中轻松实现这点,但更好的

方式是:methods只是纯粹的数据逻辑,而不是去处理DOM事件的细节。

为了解决这个问题,Vue.js为v-on提供了事件修饰符,通过由(.)表示的指令后缀来调用修饰符。

.stop

.prevent

.capture

.self

.once 

<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>

新增

<!--点击事件将只会触发一次-->
<a v-on:click.once="dothis"></a>

不像其他只能对原生的DOM事件起作用的修饰符,.once修饰符还能被用到自定义的组件事件上

按键修饰符
在监听键盘事件时,我们经常需要监听常见的键值。

Vue允许为v-on在监听事件时添加按键修饰符:

<!--只有在keyCode是13时调用vm.submit()-->
<input v-on:keyup.13="submit">

常见的按键还有别名:

<input v-on:keyup.enter="submit">
<input @keyup.enter="submit">

全部的按键别名:

.enter

.tab

.delete

.esc

.space

.up

.down

.left

.right

可以通过全局config.keyCodes对象 自定义案件修饰符别名

//可以使用v-on:keyup.f1
Vue.config.keyCodes.f1=112

按键修饰符  新增

可以用如下修饰符开启鼠标或键盘事件监听,使在按键按下时发生反应。

.ctrl

.alt

.shift

.meta 

注意:在不同系统的键盘上,meta对应的键不一样

为什么在HTML中监听事件
你可能注意到这种事件监听的方式违背了关注点分离的传统理念。不必担心,因为所有的Vue.js事件处理方法和表达式都严格绑定在当前视图的ViewModel上,它不会导致任何维护上的困难。实际上,使用v-on有几个好处:

1 扫一眼HTML模板便能轻松定位在JavaScript代码里对应的方法

2 因为你无须在JavaScript里手动绑定事件,你的viewModel代码可以是非常纯粹的逻辑,和DOM完全解耦,更易于测试。

3 当一个ViewModel被销毁时,所有的事件处理器都会自动被删除,你无须担心如何自己清理它们。

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
cnblogs csdn 代码运行框实现代码
Nov 02 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
Jul 29 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
Jul 01 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
Sep 12 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
Jan 25 Javascript
JS函数定义方式的区别介绍
Mar 22 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 #Javascript
Vue.js基础学习之class与样式绑定
Mar 20 #Javascript
详解Vue中添加过渡效果
Mar 20 #Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 #Javascript
JavaScript 过滤关键字
Mar 20 #Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 #Javascript
js实现鼠标拖动功能
Mar 20 #Javascript
You might like
十天学会php之第八天
2006/10/09 PHP
精通php的十大要点(上)
2009/02/04 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
多个python文件调用logging模块报错误
2020/02/12 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
民主生活会发言材料
2014/10/20 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL