• 基本应用
  • 修饰符
  • 为什么要在HTML中使用事件监听
  • Demo

一、基本应用

1.通过v-on指令绑定事件,例如: <button v-on:click="">提交</button> ;

在vue官方教程上第一个示例是直接在表达式中写入一个可执行计算代码:

<button v-on:click="conter += 1">add 1</button>
//conter是一个data数据,触发点击事件后可以直接将计算的最新结果渲染到页面

2.通过methods实现事件函数绑定,例如:

 1 <div id="example">
 2 <button v-on:click="greet">Greet</button>
 3 </div>
 4 <script>
 5 var vm = new Vue({
 6     el:"#example",
 7     data:{
 8         name:"vuejs"
 9     },
10     methods:{
11         greet(event){
12             alert("hello!" + event.target.tagName + "的" + this.name + "事件click");
13         }
14     }
15 });
16 </script>    

2.给事件函数传递参数:这是后就需要使用变量$event实现传入事件源对象了。

1 <button v-on:click="greet('vuejs',$event)">Greet</button>
2 greet(message,event){
3     alert("hello!" + event.target.tagName + "的" + message + "事件click");
4 }

二、修饰符

  • 事件修饰符
  • 按键修饰符与按键码
  • 系统修饰符
  • exact修饰符
  • 鼠标按钮修饰符

修饰符可以理解为处理相关事件的特殊情况,实现方法就是在事件名称后面以后缀的形式添加指定的修饰符。

1.事件修饰符:https://cn.vuejs.org/v2/guide/events.html#事件修饰符

.stop:阻止单击事件继续传播;

.prevent:只有修饰符,提交事件不再重载页面,修饰符可串联;

.capture:添加事件监听器时使用事件捕获模式,即元素自身触发的事件先在自身处理,然后交由内部元素进行处理;

.self:只有在event.target是当前元素自身时出发处理函数,即事件不是从内部元素触发的;

.once:点击事件将只触发一次;

.passice:滚动事件会立即触发,不会等待其他串联事件。即prevent会失效。

2.按键修饰符与按键码

.enter:只有在‘key’是‘Enter’时调用事件处理函数 <input v-on:keyup.enter="submit"> ;

.kebab-case:可以将keyboardEvent.key暴露的任意有效按键名转换为kebab-case来作为修饰符,意思是通过串联符‘-’来表示键盘上的驼峰命名按键事件,实现$event.tey指定键盘上驼峰命名按钮事件,例如: <input v-on:keyup.page-down="onPageDown"> ;

按键别名:

.enter:回车键;

.tab:TAB键;

.delete:删除和退格键;

.esc:终止键;

.space:删除键;

方向键:.up、.down、left、.right;

还可以通过Vue全局上的config.keyCodes对象自定义按键修饰符别名:例如 Vue.config.keyCodes.f1 = 112 ;

3.系统修饰键

.ctrl、.alt、.shift、.meta;前面三个键都能对应的上,meta是“窗口键”,在window上是window图标的那个键,其它系统大家对号入座。

通过系统修饰键组合按键指令:例如:

1 <!-- Alt + C -->
2 <input @keyup.alt.67="clear">
3
4 <!-- Ctrl + Click -->
5 <div @click.ctrl="doSomething">Do something</div>

这时候就会有新的问题产生,如果需要单独的系统按键的事件怎么办呢?Vue提供了.exact修饰符:

 1 .exact 修饰符允许你控制由精确的系统修饰符组合触发的事件。
 2
 3 <!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
 4 <button @click.ctrl="onClick">A</button>
 5
 6 <!-- 有且只有 Ctrl 被按下的时候才触发 -->
 7 <button @click.ctrl.exact="onCtrlClick">A</button>
 8
 9 <!-- 没有任何系统修饰符被按下的时候才触发 -->
10 <button @click.exact="onClick">A</button>

4.鼠标按钮修饰符2.2.0版本

.left、.right、.middle

三、为什么要在HTML中使用事件监听

我们通常在描述vue时都会说它是一个数据驱动的框架,而这种事件监听的方式违背了这个说法,但不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。实际上,使用 v-on 有几个好处:

  1. 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。

  2. 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。

  3. 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。

四、demo

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 9     <style>
10         *{
11             list-style:lower-alpha;
12         }
13     </style>
14 </head>
15 <body>
16     <div id="app">
17         <input type="text" v-model.trim="taskText" v-on:change="addTask">
18         <button v-on:click="accomplishTaskList">提交</button>
19         <span>{{prompt}}</span>
20         <ul>
21             <li v-for="(item, key) in newTask" v-bind:key="item">
22                 <span>{{item}}</span>
23                 <button v-on:click="accomplishTask(key)">X</button>
24             </li>
25         </ul>
26         <h3>已完成任务</h3>
27         <ul>
28             <li v-for="item in taskList">{{item}}</li>
29         </ul>
30     </div>
31     <script>
32         var vm = new Vue({
33             el:"#app",
34             data:{
35                 taskText:"",
36                 newTask:[],
37                 taskList:[],
38                 prompt:""
39             },
40             methods:{
41                 addTask(){
42
43                     if(this.taskText == ""){
44                         this.prompt = "输入不能为空";
45                         return;
46                     }else if(this.newTask.includes(this.taskText) || this.taskList.includes(this.taskText)){
47                         this.prompt = "不能重复输入任务";
48                     }else{
49                         this.newTask.unshift(this.taskText);
50                         // this.newTask.unshift(this.taskText);
51                         this.taskText = "";
52                     }
53                 },
54                 accomplishTask(index){
55                    const val = this.newTask.splice(index,1);
56                    this.taskList.push(...val);
57                 },
58                 accomplishTaskList(){
59                     const valList = this.newTask.splice(0);
60                     this.taskList.push(...valList);
61                 }
62             }
63         });
64     </script>
65 </body>
66 </html>

转载于:https://www.cnblogs.com/ZheOneAndOnly/p/11048364.html

vue入门:(事件处理)相关推荐

  1. Vue 入门基础知识

    01-Vue入门 学习Vue最好的方式:查看官网文档 https://cn.vuejs.org/ 1.1-Vue介绍 Vue介绍 描述 1.Vue是一个JavaScript框架 框架:别人写好的js文 ...

  2. Day7:Vue入门学习——传智播客学习笔记【微服务电商】

    本节依旧是前端内容,但还是了解一下基础的入门知识 学习目标 会创建Vue实例,知道Vue的常见属性 会使用Vue的生命周期的钩子函数 会使用vue常见指令 会使用vue计算属性和watch监控 会编写 ...

  3. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  4. Vue.js 事件处理

    监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 示例: <div id="example-1"><butto ...

  5. 建立项目接口文档_分享:一步一个脚印,vue入门之使用mockjs搭建vue项目测试服务器...

    在以前的文档中,我们构建了vue项目的整体架构,详见vue入门:vue项目架构设计起步,现在我们主要对其中的mock server 进行完善. 一.概述 前后端分离的项目优点之一就是可以前后端并行开发 ...

  6. Vue入门指南-05 Vue实例的生命周期(快速上手vue)

    生命周期钩子 = 生命周期函数 = 生命周期事件 实例创建期间的生命周期函数 // 刚初始化了一个空的实例对象, 这时候只有默认的一些生命周期函数和默认事件, 其他都未创建. // 如果要调用 met ...

  7. Vue入门之animate过渡动画效果

    简介: transition方法的使用 transition内置方法 transition-group animate库实现过渡动画 `<!DOCTYPE html>` `<html ...

  8. 【Vue】—事件处理

    [Vue]-事件处理

  9. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

最新文章

  1. Linux下新增硬盘处理过程
  2. Poj 1112 Team Them Up!
  3. DIV+CSS笔记(一)
  4. lec 3 of game design
  5. html导航条置顶,jquery导航菜单栏固定悬浮顶部实现效果
  6. php 堵塞 消息队列,PHP的并发处理
  7. Weblogic的管理服务器与受管服务器
  8. 大型油烟机清洗机器人_大型油烟机清洗机
  9. Sync Framework 词汇表
  10. yii2 Expression解决查询或者条件有mysql函数时
  11. C# ManualResetEvent和AutoResetEvent 使用笔记
  12. 并发编程学习之线程8锁
  13. Could not read JSON: Cannot construct instance of `java.util.ArrayList$SubList`
  14. redis mysql 雪崩_Redis雪崩和穿透问题
  15. OA系统选型的那些事儿
  16. CC26x2R1笔记(8)CCS9.2 cc26xx环境的搭建
  17. Linux 下 ls -l 命令执行显示结果的每一列含义
  18. .net使用Microsoft.Office给word添加自定义水印
  19. int java 声明_怎样用java定义一个int数组 C++ 怎么声明一个整型数组?
  20. Python|计算工资

热门文章

  1. 一种光伏发电数据采集器
  2. 下载安装VS2019时下载速度一直为0
  3. 全国计算机二级真题第四套word,全国计算机二级office-word-历年真题
  4. python搭建HTTP服务器
  5. 关于Java里面的String.getBytes()方法
  6. android+水滴粘性动画,纯css实现Material Design中的水滴动画按钮
  7. 【Python入门】Turtle海龟库:利用海龟画笔绘制简单图形(4)
  8. k8s-3_1集群资源总结
  9. 图书管理系统测试报告--信息管理功能篇
  10. 斯伦贝谢好进吗_你知道斯伦贝谢中国软件家族吗?请进!