Vue.js学习笔记 第五篇 事件处理
监听事件
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script src="https://unpkg.com/vue"></script>
- </head>
- <body>
- <div id="app-1">
- <button v-on:click="counter += 1">Add</button>
- <p>这个按钮被点击了{{ counter }}次</p>
- </div>
- <script type="text/javascript">
- var vm1 = new Vue({
- el: '#app-1',
- data: {
- counter: 0
- }
- })
- </script>
- </body>
- </html>
v-on指令,用于绑定事件,事件的处理是对counter变量累加
那么问题来了,实际应用中事件的处理并没有这么简单,在处理复杂的逻辑时,这种方式就不合适了,这时需要定义一个方法来处理
- <div id="app-2">
- <button @click="hello">Hello</button>
- </div>
- <script type="text/javascript">
- var vm2 = new Vue({
- el: '#app-2',
- data: {
- name: 'TanSea'
- },
- methods: {
- hello: function(event) {
- alert('Hello, ' + this.name + '!')
- if (event) { alert(event.target.tagName) };
- }
- }
- })
- </script>
这里,我们又看到了一个陌生的东西@click,他是v-on:click的简写
到目前为止,我们已经学到了2个指令的简写方法,一个是针对属性的v-bind,一个是针对方法的v-on,可见这2个指令是Vue使用频率最高的2个指令
Vue对象实例化时,多了一个新的参数methods(方法),用来定义事件的处理方法
事件修饰符
1、.once修饰符,事件只会被触发一次,版本:2.1.4+
- <div id="app-3">
- <button @click.once="count">Add</button>
- <p>这个按钮被点击了{{ counter }}次</p>
- </div>
- <script type="text/javascript">
- var vm3 = new Vue({
- el: '#app-3',
- data: {
- counter: 0
- },
- methods: {
- count: function() {
- this.counter += 1
- }
- }
- })
- </script>
2、.stop修饰符,阻止事件冒泡
先解释一下什么叫事件冒泡,当父元素和子元素同时绑定了一个事件时,子元素先触发事件,父元素再触发事件
和事件冒泡相对应的叫事件捕获,父元素先触发事件,子元素再触发事件
- <div id="app-3">
- <div @click="count">
- 父元素<br>
- <p @click.stop="count">子元素</p>
- </div>
- <p>这个按钮被点击了{{ counter }}次</p>
- </div>
- <script type="text/javascript">
- var vm3 = new Vue({
- el: '#app-3',
- data: {
- counter: 0
- },
- methods: {
- count: function() {
- this.counter += 1
- }
- }
- })
- </script>
父元素(div)和子元素(p)同时绑定了一个事件,当点击父元素时counter加1,当点击子元素时,由于stop修饰符阻止了事件冒泡,所以counter也只加1
如果去掉stop修饰符,当点击子元素时,counter会加2(子元素和父元素先后触发事件)
按键修饰符
1、按键编码
只有在keyCode是13(“回车”键)时调用事件confirm
- <div id="app-4">
- 按键编码:<input @keyup.13="confirm" v-model:value="content">
- </div>
- <script type="text/javascript">
- var vm4 = new Vue({
- el: '#app-4',
- data: {
- content: ''
- },
- methods: {
- confirm: function() {
- alert(this.content)
- }
- }
- })
- </script>
2、按键别名
我们很难记住所有的keyCode,所以Vue提供了一些常用按键别名:
- .enter (“回车”键)
- .tab (“TAB”键)
- .delete (捕获 “删除” 和 “退格” 键)
- .esc (“ESC”键)
- .space (“空格”键)
- .up (向上方向键)
- .down (向下方向键)
- .left (向左方向键)
- .right (向右方向键)
当然,除了这些常用按键别名之外,Vue也提供了自定义按键别名的方法
- Vue.config.keyCodes.f4 = 115 //全局自定义按键别名
只有在“回车”键或"F4"键时调用事件confirm
- <div id="app-4">
- 按键别名:<input @keyup.enter.f4="confirm" v-model:value="content">
- </div>
- <script type="text/javascript">
- Vue.config.keyCodes.f4 = 115
- var vm4 = new Vue({
- el: '#app-4',
- data: {
- content: ''
- },
- methods: {
- confirm: function() {
- alert(this.content)
- }
- }
- })
- </script>
3、组合按键,版本:2.1.0+
- .ctrl
- .alt
- .shift
- .meta (根据操作系统的不同而不同,Windows系统是WIN键)
组合按键不能单独触发事件,要与非组合按键一起才能触发事件
- <!-- "回车"键 或 "F4"键 触发事件 -->
- <input @keyup.enter.f4="confirm">
- <!-- "回车"键 和 "CTRL"键 触发事件 -->
- <input @keyup.enter.ctrl="confirm">
Vue.js学习笔记 第五篇 事件处理的更多相关文章
- Vue.js学习笔记 第七篇 表单控件绑定
本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...
- Vue.js学习笔记 第八篇 组件
全局注册组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- Vue.js学习笔记 第六篇 内置属性
computed属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...
- Vue.js学习笔记 第四篇 列表渲染
遍历数组和对象 和条件选择一样,循环也和其他语言类似,也尝试着用一个例子解决问题 <!DOCTYPE html> <html> <head> <meta ch ...
- Vue.js学习笔记 第三篇 条件渲染
条件选择 条件选择的用法和其他语言类似,一个例子就能解决所有问题 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- Vue.js学习笔记 第一篇 数据绑定
双花括号文本插值 先来个最简单的例子,看完之后立马会用Vue了,是不是很有成就感 <!DOCTYPE html> <html> <head> <meta ch ...
随机推荐
- CentOS 6.5 MySQL5.6.26源码安装
一.源码安装cmake工具 从mysql5.5起,mysql源码安装开始使用cmake wget http://cmake.org/files/v3.2/cmake-3.2.3.tar.gztar z ...
- openwrt源码下载移植
openwrt源码下载移植 一.源码下载 1.1下载 由于本人多次尝试从SVN代码地址下载代码,出现无法访问因此这里选择从Git代码地址进行下载.在linux系统命令终端输入 git clone gi ...
- Laravel5.1 模型 --一对一关系
这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方便的功能. 1 实现一对一关系 1.1 准备工作 首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表. 这 ...
- windows下sshfs挂载远程文件夹-server could not connect故障解决
使用sshfs挂载server上面的文件夹到windows中.轻松方便. 在之前的系统上挂载.没出问题. 近期买了块固态硬盘.装了个系统. 结果在系统上执行sshfs时报例如以下错误: 事实上非常ea ...
- Log4j 使用
源博客 http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html#3159794 [1]从零开始 a). 新建Java Pro ...
- LIS(模板)
记录一下,O(nlgn)的算法求LIS //HHH #include <iostream> #include <stdio.h> #include <string.h&g ...
- 【转】.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
阐述签名工具这个概念之前,我先说说它不是什么: 1.它不是用于给程序集加密的工具,它与阻止Reflector或ILSpy对程序集进行反编译一毛钱关系都没有. 2.它很讨厌人们把它和加密联系在一起. 我 ...
- 巨蟒python全栈开发数据库前端9:bootstrap
1.bootstrap的主网站: http://www.bootcss.com/ (1)bootstrap的CSS样式 (2)bootstrap组件 (3)JavaScript插件 (4)阿里图标库的 ...
- Python星号*与**用法分析 What does ** (double star/asterisk) and * (star/asterisk) do for parameters? 必选参数 默认参数 可变参数 关键字参数
python中*号**的区别 - CSDN博客 https://blog.csdn.net/qq_26815677/article/details/78091452 定义可变参数和定义 list 或 ...
- MySQL中Cardinality值的介绍
1) 什么是Cardinality 不是所有的查询条件出现的列都需要添加索引.对于什么时候添加B+树索引.一般的经验是,在访问表中很少一部分时使用B+树索引才有意义.对于性别字段.地区 ...