Vue.js事件处理

1、v-on指令

用法如下:使用v-on:指令指定其执行的具体内容或者方法名即可。
        <button v-on:click='num++'>giao</button>
简写形式
        <button @click='num++'>giao</button>
随着业务逻辑的增加,这种方式并不适用于我们实际的开发,所以我们实际的开发中,一般把vue中的事件单独定义为一个方法。方法定义在vue中的methods中,如果要在该方法中使用vue的data中的属性时,使用this关键字来调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="../vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<p>{{num}}</p>
<button @click='say()'>giao</button>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
num : 0
},
methods:{
say(){
this.$data.num++;
}
}
});
</script>
</body>
</html>
如果方法中需要传递参数,或者得到调用方的对象。可以进行如下操作。

​ 其中普通参数直接传入实际参数,在方法中定义形参即可,获取当前被触发的对象使用$event即可。

​ 注意点:

​ 如果事件直接绑定半数名称,那么默认会传递事件对象作为事件函数的第一个参数(就是直接加参数名不加小括号的形式。例如@click='btnClick' )

​ 如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递,并且事件对象的名称必须是\(event(例如@click='btnClick(123,345,\)event)')

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="../vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<p>{{num}}</p>
<button @click='say(500,600,$event)'>giao</button>
</div>
<script>
var vm = new Vue({
el:'#app',
data:{
num : 0
},
methods:{
say(p1,p2,event){
this.$data.num++;
console.log(p1);
console.log(p2);
console.log(event.target.tagName);
console.log(event.target.innerHTML);
}
}
});
</script>
</body>
</html>

2、事件修饰符

2.1、.stop阻止冒泡
什么是冒泡行为?

​ 如果标签以及其父标签都存在click方法,那么点击子标签会自动再执行其父标签的单击事件。这种现象 就叫做冒泡。

如何阻止冒泡?

​ 在vue中,我们可以通过.stop修饰符来实现冒泡的阻止。具体的操作:在子标签中加入@click.stop="eventName()"即可。

2.2、.prevent组织默认行为
什么又是默认行为呢?

​ 在html页面中,我么的很多标签具有它自己本身的功能,例如a标签有点击跳转的功能,那么我们给它指定单击事件的时候就存在一些异议。此时可以使用时间修饰符来阻止它的默认行为。

如何阻止默认行为?

​ 使用.prevent修饰符可以阻止默认行为,具体操作如下:

<a @click.prevent='handle'>跳转</a>

2.3、其他修饰符

​ 在vue中还存在其他的事件修饰符,但是它们不是很常用,我们需要时再去查看即可。

​ 另外事件修饰符还支持串联,例如@click.stop.prevent='handle()',串联还存在先后顺序。

​ .capture

​ .self

​ .once

​ .passive

3、按键修饰符(键盘事件修饰符)

​ vue中不仅有鼠标事件的修饰符,还有键盘事件的修饰符。常用的如下

3.1、.enter修饰符

​ 用法如下:<input type="button" @keyup.enter='handleSubmit()' v-model='pwd'>

3.2、.delete修饰符

​ 这个修饰键,一般用于清空当前输入框,用法如下:<input type='input' @keyup.delete='handle()'>

其他按键修饰符

​ vue还提供了这些按键修饰符,这里不做过多的演示,需要的话可以去官网了解。

​ .tab

​ .esc

​ .up

​ .down

​ .space

​ .left

​ .right

自定义按键修饰符。

​ 除了vue提供的这些按键修饰符以外,我们还可以使用config.keyCodes对象来自定义按键修饰符。

​ 首先通过@keyup='handle'给标签添加一个键盘弹起事件,然后在该方法的方法体内获取按键的keyCode

handle:function(){concole.log(event.keyCode);}可以得到需要的按键的键码,

​ 然后使用@keyup.键码='handle'即可。但是这样可读性比较低。所以一般我们使用vue中的自定义按键修饰 符,方法如下:在script标签中写上Vue.config.keyCode.aaa= 65 ;此时通过.aaa就可以实现,按下键码为65 的按钮的效果。

Vue.js事件处理的更多相关文章

  1. Vue.js学习 Item8 -- 方法与事件处理器

    方法处理器 可以用 v-on 指令监听 DOM 事件: <div id="example"> <button v-on:click="greet&quo ...

  2. vue基础——事件处理

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

  3. Vue.js 相关知识(基础)

    1. Vue.js 介绍 Vue,读音 /vjuː/,类似于 view),是一套用于构建用户界面的渐进式框架(重点在于视图层). 作者:尤雨溪 注:学习 vue.js 时,一定要抛弃 jQuery 的 ...

  4. 一起学Vue之事件处理

    在Vue进行前端开发中,事件监听是必不可少的功能,本文通过简单的小例子,简述v-on的简单用法,仅供学习分享使用,如有不足之处,还请指正. 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发 ...

  5. vue.js 第九课

    这次讲红色框框. 方法与事件处理器: 方法处理器: 内联语句处理器: 事件修饰符: 按键修饰符: 为什么在HTML中监听事件? 1.v-on绑定事件 带参数 2.事件对象$event: 有时也需要调用 ...

  6. Vue.js——学习笔记

    Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...

  7. Vue.js教程--基础2(事件处理 表单输入绑定

    事件处理 表单输入绑定 事件处理 监听v-on 监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 可以在v-on:click=''加内联语句. 有时也需要在内联语句处理器中访问原始 ...

  8. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  9. Vue.js:轻量高效的前端组件化方案

    转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ...

随机推荐

  1. 在VS2017配置OpenGL开发环境

    这个方法适合初学者使用,较为简单方便.第一,你的VS2017一定要安装了C/C++开发组件可以打开Visual Studio Installer来查看另外,确定你有安装NuGet包管理器,在单个组件中 ...

  2. 【原】mac电脑常用快捷建

    wiki:http://www.wjjsoft.com/mybase_cn.html 1.终端 有时一个终端并不够,如何快速打开多个呢,在上部打开之伤的基础下,直接按快捷键command+N即可 一个 ...

  3. Yar并行的RPC框架的简单使用

    前言: RPC,就是Remote Procedure Call的简称呀,翻译成中文就是远程过程调用 RPC要解决的两个问题: 解决分布式系统中,服务之间的调用问题. 远程调用时,要能够像本地调用一样方 ...

  4. 关系型数据库中的jsonfield字段的优劣

    本人并非专业,开发经验也不太足,有一次在弄一个user数据表时,需要增加一些字段,又懒得去修改数据,就索性把这些属性封装在一个类中,序列化为json数据,存放在数据库的一个字段中了,后来,发现这么做至 ...

  5. iOS 开发之 设计模式【一】原型模式 (Prototype pattern)

    原型模式(Prototype pattern): 定义:使用原型实例指定创建对象的种类,并通过复制这个原型创建对象.也可以理解为模板,在创建新对象的时候,按照模板的方法来复制,避免重复造轮子. 简单来 ...

  6. 基于 Chrome 浏览器的扩展插件来进行的安装Postman

    我会给你一个安装包,见附件.你应该下载下来,解压缩到你喜欢的位置. 打开 Chrome 浏览器的「扩展程序」 点击「加载已解压的扩展程序...」按钮,找到你刚刚下载的安装包的位置,点击确定. 你去看看 ...

  7. UIAutomation 测试winForm

    static void Main(string[] args) { Console.WriteLine("\n开始窗口程序自动化测试\n"); //启动被测试程序 string p ...

  8. cin和cout输⼊输出

    写再最前面:摘录于柳神的笔记:  就如同 scanf 和 printf 在 stdio.h 头⽂件中⼀样, cin 和 cout 在头⽂件 iostream ⾥⾯,看名字就知 道, io 是输⼊输出 ...

  9. Educational Codeforces Round 72 (Rated for Div. 2)C(暴力)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;char s[200007];int a[20 ...

  10. Django 学习 之 模板(html)与配置静态文件

     一.模板(html) 1.模板语法之变量:语法为 {{ }} 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法:{{ var_name }} var_name 是一个变量名称,需要和 ...