浅谈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 相关文章推荐
javascript 避免闭包引发的问题
Mar 17 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
jQuery获取样式中颜色值的方法
Jan 29 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
Sep 14 Javascript
Bootstrap精简教程
Nov 27 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
Node.js 应用跑得更快 10 个技巧
Apr 03 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
May 09 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
p5.js绘制创意自画像
Nov 04 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中的(伪)多线程与多进程
2013/07/01 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
jQuery each()小议
2010/03/18 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序自定义底部弹出框
2020/11/16 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python实现的rsa加密算法详解
2018/01/24 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Django的CVB实例详解
2020/02/10 Python
python如何进行矩阵运算
2020/06/05 Python
python和JavaScript哪个容易上手
2020/06/23 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
python re模块常见用法例举
2021/03/01 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
涉密人员保密承诺书
2014/05/28 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
现实表现证明材料
2015/06/19 职场文书
2015入党自传书范文
2015/06/26 职场文书