vue系列--vue是如何实现绑定事件
一、前言
vuejs中的事件绑定,使用<v-on:事件名 = 函数名>来完成的,这里函数名是定义在Vue实例中的methods对象中的,Vue实例可以直接访问其中的方法。
二、事件绑定方式
1、 直接在标签中写js方法
<button v-on:click="alert('hi')">执行方法的第一种写法</button>
2、调用method的办法
<button v-on:click="run()">执行方法的第一种写法</button>
<button @click="run()">执行方法的 简写 写法</button>
export default {
data () {
return {
msg: '你好vue',
list:[]
}
},
methods:{
run:function(){
alert('这是一个方法');
}
}
}
(1)方法传参,方法直接在调用时在方法内传入参数
<button @click="deleteData('111')">执行方法传值111</button>
<button @click="deleteData('222')">执行方法传值2222</button>
deleteData(val){
alert(val);
},
(2)传入事件对象
<button data-aid='123' @click="eventFn($event)">事件对象</button>
eventFn(e){
console.log(e);
// e.srcElement dom节点
e.srcElement.style.background='red';
console.log(e.srcElement.dataset.aid); /*获取自定义属性的值*/
}
三、事件修饰符
1、stop //阻止事件继续传播 即阻止它的捕获和冒泡过程
方法一: @click='show($event)' 我们有了事件对象后,我们函数中是不是就可以利用原生中的e.cancelBubble=true;
方法二: @click.stop='show()' 只要在事件后面加 .stop 就可以阻止事件冒泡
举个例子:
实例:如下点击内部点击,阻止了冒泡过程,即只执行tz这个方法,如果不加.stop,先执行tz方法,后执行gett方法。即通过了冒泡这个过程。
<div v-on:click="gett">
外部点击
<div v-on:click.stop="tz">内部点击</div>
</div>
2、prevent //阻止默认事件:
方法一: @click='show($event)' 我们有了事件对象后,我们函数中是不是就可以利用原生中的 e.preventDefault();
方法二: @click.prevent='show()' 只要在事件后面加 .prevent 就可以阻止默认事件。
举个例子:阻止了a标签的默认刷新
<a href="" v-on:click.prevent>点击</a>
3、capture // 添加事件监听器时使用事件捕获模式,即在捕获模式下触发
实例:在点击最里层的点击6时,gett方法先执行,因为gett方法在捕获模式执行的,先与冒泡事件。下列执行顺序 geet->set->tz ,因为后俩个还是冒泡模式下触发的事件。
<div v-on:click.capture="gett">外部点击5
<div v-on:click="tz">内部点击5
<div v-on:click="set">点击6</div>
</div>
</div>
4、self //当前元素自身时触发处理函数时才会触发函数
原理:是根据event.target确定是否当前元素本身,来决定是否触发的事件/函数
实例:如果点击内部点击2,冒泡不会执行gett方法,因为event.target指的是内部点击2的dom元素,不是外部点击1的,所以不会触发自己的点击事件。
<div v-on:click.self="gett">
外部点击1
<div v-on:click="tz">内部点击2</div>
</div>
5、once //只触发一次
实例:
<div v-on:click.once="tz">once</div>
6、键盘事件
方法一:@keydown='show()' 当然我们传个$event 也可以在函数中获 ev.keyCode
if(ev.keyCode==13){
alert('你按了回车键!')
}
方法二:
<input type="text" @keyup.enter="show()">回车执行
<input type="text" @keydown.up='show()' >上键执行
<input type="text" @keydown.down='show()' >下键执行
<input type="text" @keydown.left='show()' >左键执行
<input type="text" @keydown.right='show()' >右键执行
【谢谢关注和阅读,后续新的文章首发:sau交流学习社区:https://www.mwcxs.top/】
vue系列--vue是如何实现绑定事件的更多相关文章
- vue系列---Vue组件化的实现原理(八)
_ 阅读目录 一. 什么是Vue组件? 如何注册组件? 1.1 全局注册组件 1.2 局部注册组件 二:组件之间数据如何传递的呢? 1) props 2) $emit 3) 使用$ref实现通信 4) ...
- vue系列---vue项目(已安装vuex)中引入jquery
vue项目中引入jquery有很多方法,这只是其中一种. 步骤如下: 1,安装jquery依赖 npm install jquery --save 如果是使用淘宝镜像则将npm改为cnpm 2,修改配 ...
- [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
一.在vue中,绑定事件,用v-on:事件类型, 如绑定一个点击事件, 我们可以这样子做 window.onload = function () { var c = new Vue({ el : 'b ...
- [js高手之路] vue系列教程 - 事件专题(4)
本文主要讲解事件冒泡,事件绑定的简写,事件默认行为,按键码等一系列与事件相关的知识. 一.事件绑定的简写,@事件类型. 之前我的[js高手之路] vue系列教程 - vue的事件绑定与方法(2) 用 ...
- Vue系列(一):简介、起步、常用指令、事件和属性、模板、过滤器
一. Vue.js简介 1. Vue.js是什么 Vue.js也称为Vue,读音/vju:/,类似view,错误读音v-u-e 是一个轻量级MVVM(Model-View-ViewModel)框架,和 ...
- vue for 绑定事件
vue for 绑定事件 <div id="pro_list" v-for="item in pro_list"> <div class=&q ...
- Vue框架之双向绑定事件
Vue框架之双向绑定事件 首先介绍下Vue框架的语法 vue通过 {{temp}} 来渲染变量 {{count+100}} # 求和 v-text # 为标签插入text文本 v-html # 为标签 ...
- vue form表单绑定事件与方法
使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...
- 解决vue 绑定事件会覆盖默认参数的问题
解决vue 绑定事件会覆盖默认参数的问题 在使用一些ui框架的时候,某些组件的框架中的事件所规定的参数不能满足实际开发的需要,但是直接传入参数会把默认的参数覆盖掉 解决方法:将参数放入箭头函数中,传递 ...
随机推荐
- generator的本质是将异步的管理剥离
generator的本质是将异步的管理剥离
- maven聚合项目以及使用dubbo远程服务调用debug操作。
1.maven聚合项目以及使用dubbo远程服务调用debug操作. 然后操作如下所示: 然后如下所示: 启动断点所在的包的服务.以debug的形式启动. 断点进来的效果如下所示: 接下来请继续你的表 ...
- GitFirstRemote
1.$ git ls-remote From git@github.com:Smoothfu/WPFITEMSSOURCEPRODUCTCOLLECTION.git9a6669a2e2c9e22b30 ...
- 记录微信支付开发中的小经验(errcode = 40163; errmsg = "code been used")
今天上午客户提出问题,看了一下报错截图,应该是我更新版本时少传了一个参数,导致后续报错, 心里想着小问题,直接生产环境添加一下就行了,于是就为了我这一上午的悲剧埋下了伏笔 十分自信的把页面中的代码添加 ...
- C#: 解决Fody is only supported on MSBuild 16 and above
背景信息: 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,在拷贝给到别人使用 ...
- .Net捕获网站异常信息记录操作日志
第一步:在Global.asax文件下的Application_Error()中写入操作日志 /// <summary> /// 整个网站出现异常信息,都会执行此方法 /// </s ...
- 小鸟初学Shell编程(六)变量赋值
变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使 ...
- Java常用算法总结
冒泡排序 从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右侧. 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出. 代码如下: public ...
- visudo: /etc/sudoers is busy, try again later
启动visudo时,报错"visudo: /etc/sudoers is busy, try again later" 解决思路:杀掉visudo进程 ps -ef|grep vi ...
- 【IDE_IntelliJ IDEA】idea中设置类和方法的注释模板
参考博文:idea生成类注释和方法注释的正确方法