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 相关文章推荐
JS加jquery简单实现标签元素的显示或隐藏
Sep 23 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
原生javascript获取元素样式
Dec 31 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
Javascript中typeof 用法小结
May 12 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
快速处理vue渲染前的显示问题
Mar 05 Javascript
Vue中使用vue-i18插件实现多语言切换功能
Apr 25 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
Nest.js散列与加密实例详解
Feb 24 Javascript
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
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中for循环语句的几种变型
2006/11/26 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
基于php判断客户端类型
2016/10/14 PHP
jQuery 1.0.2
2006/10/11 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Python处理session的方法整理
2019/08/29 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
迟到检讨书大全
2014/01/25 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
2015大学生实训报告
2014/11/05 职场文书
《月光曲》教学反思
2016/02/16 职场文书
九年级语文教学反思
2016/03/03 职场文书
python实现过滤敏感词
2021/05/08 Python
MySQL如何构建数据表索引
2021/05/13 MySQL
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫