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 相关文章推荐
利用jquery写的左右轮播图特效
Feb 12 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
js实现超简单的展开、折叠目录代码
Aug 28 Javascript
js滚动条平滑移动示例代码
Mar 29 Javascript
String字符串截取的四种方式总结
Nov 28 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
详解AngularJS 路由 resolve用法
Apr 24 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
Array.filter中如何正确使用Async
Nov 04 Javascript
js实现纯前端压缩图片
Nov 16 Javascript
一起来了解一下JavaScript的预编译(小结)
Mar 01 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
PHPlet在Windows下的安装
2006/10/09 PHP
将PHP作为Shell脚本语言使用
2006/10/09 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
PHP处理Oracle的CLOB实例
2014/11/03 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
基于Python的接口测试框架实例
2016/11/04 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
员工培训协议书
2014/09/15 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
长江七号观后感
2015/06/11 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
Python中第三方库Faker的使用详解
2022/04/02 Python