浅谈Vue.js 中的 v-on 事件指令的使用


Posted in Javascript onNovember 25, 2018

v-on 事件指令用于绑定事件。

1 基础用法

v-on 指令绑定事件后,就会监听相应的事件。

html:

<div id="app">
 <h3>已点击 {{count}} 次</h3>
 <button @click="count++">点我</button>
</div>

注意: @clickv-on:click 的简写形式, @ 即表示 v-on:

js:

<script>
 var app = new Vue({
  el: '#app',
  data: {
   count:0
  }
 });
</script>

效果:

浅谈Vue.js 中的 v-on 事件指令的使用

@click 表达式即可以直接使用 js 语句,也可以是一个定义在 vue 实例中 methods 内的函数名。

html:

<button @click="quickAdd(3)">快速增长</button>

js:

methods: {
 quickAdd: function (i) {
  i = i || 1;//为避免参数为 null 或 undefined 值,这里设定了默认值 1
  this.count += i;
 }
}

效果:

浅谈Vue.js 中的 v-on 事件指令的使用

注意: @click 调用的方法名如果不需要参数,那么可以不写括号。

使用 Vue.js 的一个好处是:当销毁 ViewModel 时,会自动销毁所有绑定在其上的事件处理器。

2 调用 DOM 事件

Vue.js 还提供了一个 $event 变量,使用它可以访问原生 DOM 事件。 $event 变量可以通过方法传入。

html:

<div id="app2">
 <a href="www.163.com" rel="external nofollow" @click="openUrl('被禁用咯',$event)">被禁用咯</a>
</div>

js:

var app2 = new Vue({
 el: '#app2',
 data: {
  count: 0
 },
 methods: {
  openUrl: function (param, event) {
   event.preventDefault();
   console.log("param:" + param);
  }
 }
});

输出结果:

param:被禁用咯

这个示例利用传入的 event 参数,禁用了原有的链接跳转逻辑。

3 事件修饰符

Vue.js 支持以下事件修饰符:

事件修饰符 示例 示例说明
.stop @click.stop 阻止单击事件冒泡。
.prevent @submit.prevent 提交页面不再重载页面。
.capture @click.capture 添加事件监听器时使用事件捕获模式。
.self @click.self 只有当单击事件是元素的自身事件时,才会触发。
.once @click.once 只触发一次。

4 按键修饰符

可以使用按键修饰符,来监听表单元素上的键盘事件。

html:

<div id="app3">
 <input @keyup.13="enterClick">
</div>

js:

var app3 = new Vue({
 el: '#app3',
 data: {},
 methods: {
  enterClick: function () {
   console.log("enterClick");
  }
 }
});

输出结果:enterClick

这个示例演示了如何通过回车按键修饰符来绑定事件函数的过程。

除了使用 keycode 来指定按键之外,我们还可以使用以下这些按键别名:

  • .enter
  • .tab
  • .delete
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

还有一些按键修饰符可以组合使用,或者和鼠标一起使用:

  • .ctrl
  • .alt
  • .shift
  • .meta:Mac 下为 Command 键,Windows 下为窗口键。

html:

<div id="app4">
 <input @keyup.alt.83="save">
</div>

js:

var app4 = new Vue({
 el: '#app4',
 data: {},
 methods: {
  save: function () {
   console.log("save");
  }
 }
});

输出结果:save

这个示例,我们通过组合按键修饰符,为输入框绑定了 alt + S 事件。

本文示例( DEMO )

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

Javascript 相关文章推荐
Jquery知识点一 Jquery的ready和Dom的onload的区别
Jan 15 Javascript
JQuery 选择器、过滤器介绍
Feb 14 Javascript
javascript 学习笔记(八)javascript对象
Apr 12 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
Nov 07 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
Vue中的Vux配置指南
Dec 08 Javascript
r.js来合并压缩css文件的示例
Apr 26 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 #Javascript
vue组件实践之可搜索下拉框功能
Nov 25 #Javascript
详解离线安装npm包的几种方法
Nov 25 #Javascript
vue将单页面改造成多页面应用的方法
Nov 25 #Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 #Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
Nov 25 #Javascript
详解Vue CLI 3.0脚手架如何mock数据
Nov 23 #Javascript
You might like
php输出表格的实现代码(修正版)
2010/12/29 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python变量的作用域是什么
2020/05/26 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
创建绿色学校先进个人材料
2014/08/20 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
2015选调生工作总结
2015/07/24 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle
关于mysql中string和number的转换问题
2022/06/14 MySQL
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技