Vue.js事件处理
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事件处理的更多相关文章
- Vue.js学习 Item8 -- 方法与事件处理器
		方法处理器 可以用 v-on 指令监听 DOM 事件: <div id="example"> <button v-on:click="greet&quo ... 
- vue基础——事件处理
		监听事件 可以用 v-on 指令监听dom事件,并在触发时运行一些JavaScript代码. 示例: <div id="example-1"> HTML <but ... 
- Vue.js 相关知识(基础)
		1. Vue.js 介绍 Vue,读音 /vjuː/,类似于 view),是一套用于构建用户界面的渐进式框架(重点在于视图层). 作者:尤雨溪 注:学习 vue.js 时,一定要抛弃 jQuery 的 ... 
- 一起学Vue之事件处理
		在Vue进行前端开发中,事件监听是必不可少的功能,本文通过简单的小例子,简述v-on的简单用法,仅供学习分享使用,如有不足之处,还请指正. 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发 ... 
- vue.js 第九课
		这次讲红色框框. 方法与事件处理器: 方法处理器: 内联语句处理器: 事件修饰符: 按键修饰符: 为什么在HTML中监听事件? 1.v-on绑定事件 带参数 2.事件对象$event: 有时也需要调用 ... 
- Vue.js——学习笔记
		Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ... 
- Vue.js教程--基础2(事件处理 表单输入绑定
		事件处理 表单输入绑定 事件处理 监听v-on 监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 可以在v-on:click=''加内联语句. 有时也需要在内联语句处理器中访问原始 ... 
- 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 的目的是 ... 
- Vue.js:轻量高效的前端组件化方案
		转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ... 
随机推荐
- C++11常用特性介绍——Lambda表达式
			一.C++11采用配对的方括号[]来创建一个匿名函数并执行,如: #include <iostream> int main() { auto func = []{ std::cout &l ... 
- 【降维】主成分分析PCA推导
			本博客根据 百面机器学习,算法工程师带你去面试 一书总结归纳,公式都是出自该书. 本博客仅为个人总结学习,非商业用途,侵删. 网址 http://www.ptpress.com.cn 目录: PCA最 ... 
- swiper插件遇到的坑
			1.网速卡的情况下轮播图会出现塌陷 解决方法: 在swiper外层固定高度,用填充百分比方法: html代码:在swiper-container加一层外层,外层用padding-top:50%(看图片 ... 
- HTML5中改变了哪些东西?
			HTML5 推出的理由 想要把目前web上存在的各种问题一并解决 Web浏览器之间的兼容性很低 文档结构不够明确 Web应用程序的功能受到了限制 HTML5重新定义了浏览器的统一标准 HTML5 与 ... 
- 1004 Counting Leaves (30分)  DFS
			1004 Counting Leaves (30分) A family hierarchy is usually presented by a pedigree tree. Your job is ... 
- JS    表单相关
			var title = $("#subjects option:selected").text(); 
- mac下删除不需要的应用程序
			一般的应用程序删除: 1)可以在 前往--应用程序 中直接删除 2)直接在启动台中按住出现X直接删除. 问题: mac下不出现在应用程序中,启动台中按住也不出现X,也不可以直接拖到废纸篓中删除的应用如 ... 
- redis集群命令及常规操作
			集群命令 [root@redis06 etc]# redis-cli --cluster help Cluster Manager Commands: create host1:port1 ... h ... 
- 记录一次Nginx使用第三方模块fair导致的线上故障排错
			一.问题 今天发现有一台服务器的内存飙升,然后有预警,立即排查,发现该服务内存使用达到了 2G ,询问开发,当天是否有活动,被告知没有,登陆 Pinpoint 发现该服务是有两台机器,并且所有的访问都 ... 
- 笔记||Pyhton3进阶之多线程原理
			# 多线程 # 一个进程相当于一个或多个线程 # 当没有多线程编程时,一个进程也是一个主线程 # 但有多线程编程时,一个进程包含多个线程,包括主线程 # 使用线程 可以实现程序的并发 # python ... 
