事件监听

v-on

使用v-on进行事件绑定监听,回调函数写在methods中。可以使用@的这种简写形式来代替v-on,当事件源无参数传递时,可省略括号。

语法如下所示:

<button @:事件=回调函数(参数)>点我</button>

下面是一个小的示例:

<body>

<div id="app">
<button @click="func">点我</button>
</div> <script src="./vue.js"></script>
<script>
const app = new Vue({
el: "#app",
methods: {
func() {
console.log("点击事件发生了");
}
}
})
</script>
</body>

$event

事件源传入形参$event,则是当前事件对象。

<body>

<div id="app">
<button @click="func($event)">点我</button>
</div> <script src="./vue.js"></script>
<script>
const app = new Vue({
el: "#app",
methods: {
func(ev) {
console.log(ev);
}
}
})
</script>
</body>

修饰符

.once

使用.once修饰符后,该事件只会监听一次。当执行完这一次动作后将取消监听。

<div id="app">
<button @click.once="func">点我</button>
</div> <script src="./vue.js"></script>
<script>
const app = new Vue({
el: "#app",
methods: {
func() {
console.log("只执行一次");
}
}
})
</script>
</body>

.prevent

使用.prevent修饰符来阻止默认事件的发生:

<body>

<div id="app">
<a href="http://www.google.com/" @click.prevent="func">点我</a>
</div> <script src="./vue.js"></script>
<script>
const app = new Vue({
el: "#app",
methods: {
func() {
console.log("不执行默认事件");
}
}
})
</script>
</body>

.stop

使用.stop修饰符阻止事件冒泡。

<style>
.f {
width: 100px;
height: 100px;
background-color: red;
text-align: center;
color: white;
display: flex;
justify-content: center;
align-items: center;
} .s {
width: 50px;
height: 50px;
background: blue;
text-align: center;
color: white;
}
</style> <body> <div id="app">
<section @click="father" class="f">
<!-- 父亲事件不会触发 -->
<article @click.stop="son" class="s"></article>
</section>
</div> <script src='./vue.js'></script>
<script>
"use strict";
const app = new Vue({
el: "#app",
data: {},
methods: {
son() {
console.log("儿子事件触发");
},
father() {
console.log("父亲事件触发")
}
},
});
</script>
</body>

.self

使用.self修饰符,也可以防止冒泡。只有点击到自己时才触发,不会通过冒泡触发。

<style>
.f {
width: 100px;
height: 100px;
background-color: red;
text-align: center;
color: white;
display: flex;
justify-content: center;
align-items: center;
} .s {
width: 50px;
height: 50px;
background: blue;
text-align: center;
color: white;
}
</style> <body> <div id="app">
<!-- 点儿子时父亲事件不会触发 -->
<section @click.self="father" class="f">
<article @click="son" class="s"></article>
</section>
</div> <script src='./vue.js'></script>
<script>
"use strict";
const app = new Vue({
el: "#app",
data: {},
methods: {
son() {
console.log("儿子事件触发");
},
father() {
console.log("父亲事件触发")
}
},
});
</script>
</body>

.capture

使用.capture,开启事件捕获。当子元素点击事件后,冒泡到父元素时,先执行完父元素监听事件的回调函数,再执行子元素监听事件的回调函数。

正常情况下是先执行子元素回调,再执行父元素回调

<style>
.f {
width: 100px;
height: 100px;
background-color: red;
text-align: center;
color: white;
display: flex;
justify-content: center;
align-items: center;
} .s {
width: 50px;
height: 50px;
background: blue;
text-align: center;
color: white;
}
</style>
<body> <div id="app">
<section @click.capture="father" class="f">
<article @click="son" class="s"></article>
</section>
</div> <script src='./vue.js'></script>
<script>
"use strict";
const app = new Vue({
el: "#app",
data: {},
methods: {
son() {
console.log("儿子事件触发");
},
father() {
console.log("父亲事件触发")
}
},
});
</script>
</body>

键盘修饰符

使用@事件.键位的形式,来监听用户按下的键盘键位。

当按下的键位与监听的键位相同,则执行监听回调函数。

如下示例,使用组合监听。当再输入框内按下ctrla键时将触发事件的回调函数。

<body>
<div id="app">
<input type="text" @keyup.ctrl.a="func">
</div>
<script src='./vue.js'></script>
<script>
"use strict";
const app = new Vue({
el: "#app",
data: {
},
methods:{
func(){
console.log("执行了");
},
},
});
</script>
</body>

鼠标修饰符

使用@事件.按键的形式,来监听用户按下的鼠标按键。

当按下的按键与监听的键位相同,则执行监听回调函数。

如下所示,当用户在特定区域内按下右键后,阻止默认的右键弹出菜单事件,并执行事件的回调函数。

<body>
<div id="app">
<section @contextmenu.prevent="func" :style={width:"300px",height:"300px",backgroundColor:"red"}>
</section>
</div>
<script src='./vue.js'></script>
<script>
"use strict";
const app = new Vue({
el: "#app",
data: {
},
methods:{
func(){
console.log("执行了");
},
},
});
</script>
</body>

修饰符连用

修饰符支持连用,如下所示:

<button @click.once.stop=func>点我</button>

意思非常明显,只执行一次,阻止默认事件。

Vue 事件监听的更多相关文章

  1. Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)

    Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...

  2. 关于vue事件监听的一个问题

    由于新工作需要用vue,所以最近接触最多的也是vue,因为之前一直在用react,所以对于vue上手还是很快的.我也尽量找一些他们两个的异同点,除了多了一些辅助用的方法以外,最大的不同应该是对于组件间 ...

  3. vue事件监听机制

    vue事件是同步的.如果绑定了事件(组件标签上绑定事件) 组件的事件触发 组件调用时绑定事件 之后监听事件: $emit 抛出后活等着 $on ,如果监听到了则阻塞执行: 如果为监听到或者未绑定,则会 ...

  4. vue 事件监听和es6模板语法

    es6模板语法的反引号是通过左上角的飘字符弄出来了,学废了吗?

  5. onscroll事件没有响应的原因以及vue.js中添加onscroll事件监听的方法

    1 onscroll事件失效 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. vue样式绑定、事件监听、表单输入绑定、响应接口

    1.样式绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求.因为它们都是属性,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可.不过,字符串拼接麻烦且易错 ...

  7. vue自定义组件添加原生事件监听

    注:全局或局部注册的组件称为子组件,其中声明的组件名称(如下demo中的child)是一个自定义组件 Demo1-直接给父组件添加事件监听 <!DOCTYPE html> <html ...

  8. Vue学习笔记(二)动态绑定、计算属性和事件监听

    目录 一.为属性绑定变量 1. v-bind的基本使用 2. v-bind动态绑定class(对象语法) 3. v-bind动态绑定class(数组语法) 4. v-bind动态绑定style(对象语 ...

  9. vue 中监听窗口发生变化,触发监听事件, window.onresize && window.addEventListener('resize',fn) ,window.onresize无效的处理方式

    // 开始这样写,不执行 window.onresize = function() { console.log('窗口发生变化') } // 改成window监听事件 window.addEventL ...

  10. vue中监听返回键

    问题:在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿 解决方案:利用 H5的 pushstate(个人理解为增加页面栈)特性与onpop ...

随机推荐

  1. jquery(三:jquery的动画)

    动画 一:1.显示 show() 参数:1.代表动画执行的时长,毫秒数,也可以是代表时长的字符串 fast normal slow 2.代表方法执行完毕的回调函数 默认的是:normal $(func ...

  2. 2.11-12 滴水new-delete-vector(动态数组编写)

    去长沙玩了几天,没学 1.new 与 delete 通过调用分析了解到new在堆区开辟数据 delete就是释放数据 案例 #include<stdio.h> #include <m ...

  3. 你想知道的do{...}while(0)的作用,都在这里了

    0.引言         我们在嵌入式开发的过程中,经常可以碰到在一些宏定义或者是代码段中使用了do {...} while(0)的语句,从语义上理解,do {...} while(0)内的逻辑就只执 ...

  4. linux系统下,添加硬盘并挂载到操作系统的shell 脚本范例

    #!/bin/sh #新添加硬盘挂载到操作系统 pvcreate /dev/sdb   / / 一般新添加硬盘都是识别为sdb,当然,也不一定,要具体情况具体分析. vgcreate datavg / ...

  5. spring boot 3.x 配置spring security

    参考文章:https://spring.io/guides/gs/securing-web/ 导入maven <dependency> <groupId>org.springf ...

  6. vue - video视频播放完后重置播放,离开页面暂停所有视频,轮播切换后暂停播放所有视频

    描述:基于vue-awesome-swiper的多视频处理 slideChangeTransitionEnd:轮播切换时暂停播放 父组件 <swiper ref="mySwiper&q ...

  7. 【C学习笔记】day5-2 写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)

    #include <stdio.h> #include <stdlib.h> int find(int s) { int n = 0; scanf_s("%d&quo ...

  8. Spring oauth2 ,Spring security, Session,Cookie,token,SSO 是什么,解决什么问题,如何集成?

    背景假设就是一个多个域名web系统需要SSO单点登陆 什么Session? 2.什么是Token? 3.什么是Cookie? 4.Spring security? 5.Spring oauth2?

  9. 1.1 创建一个WCF应用程序服务

    第一步:引入System.ServiceModel.dll 第二步 定义一个WCF接口: //定义接口 [ServiceContract] interface IGetInfo { [Operatio ...

  10. IDEA激活 重置试用30天

    转载于 https://www.cnblogs.com/renlywen/p/14216325.html jetbrains-agent已经停止,现在又出现了新的激活方式,重置试用时间,以下为操作步骤 ...