6.Vue事件修饰符

事件修饰符

  • stop 阻止冒泡(从里到外)。
  • capture 事件监听器由冒泡模式变为捕获模式(从外到里)。
  • self 只有点击当前元素才触发。
  • once 事件只触发一次。
  • prevent 阻止默认事件。

 

实例

基础程序

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
		<style type="text/css">
			.outer{
				width: 200px;
				height: 200px;
				background-color: brown;
			}
			
			.inner{
				width: 100px;
				height: 100px;
				background-color: darkcyan
			}
		</style>
	</head>
	<body>
		<div class="outer" v-on:click="outerHandler">
			<div class="inner" v-on:click="innerHandler">
				<button class="btn" v-on:click="btnHandler">点击</button>
			</div>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el:".outer",
			methods:{
				outerHandler :function(){
					console.log("outerHandler执行");
				},
				innerHandler :function(){
					console.log("innerHandler执行");
				},
				btnHandler :function(){
					console.log("btnHandler执行");
				}	
			}
		});
	</script>
</html>

运行,点击按钮会从btn冒泡依次触发inner,outer的点击事件:

 

stop修饰符

当给inner添加stop修饰符后:

<div class="inner" v-on:click.stop="innerHandler">

点击inner只会打印:

innerHandler执行

点击btn打印:

btnHandler执行

innerHandler执行

 

capture修饰符

当给inner添加capture修饰符后:

<div class="inner" v-on:click.capture="innerHandler">

 点击inner后依旧是正常的冒泡:

innerHandler执行

outerHandler执行

点击inner中的btn后会先捕获(inner->btn)再冒泡(inner,btn->outer):

innerHandler执行

btnHandler执行

outerHandler执行 

 

self修饰符

当给inner添加self修饰符后:

<div class="inner" v-on:click.self="innerHandler">

点击inner,正常冒泡:

innerHandler执行

outerHandler执行

点击btn,冒泡会略过inner:

btnHandler执行

outerHandler执行

 

once修饰符

btn的click添加once后:

<button class="btn" v-on:click.once="btnHandler">按 钮</button>

第一次点击btn:

outerHandler执行

innerHandler执行

btnHandler执行

点击第二次:

outerHandler执行

innerHandler执行

 

prevent修饰符

<form v-on:submit="onSubmit"> 
    <input type="submit" value="提交"> 
</form>

点击提交后控制台并不会打印“submitted”,原因是submit会触发浏览器刷新导致无法看到控制台打印。

onSubmit:function() {
    console.log("submitted");
}

避免刷新的方法有两种:

1.传递参数$event

//html
<form v-on:submit="onSubmit($event)">

//vue
onSubmit:function(e) {
    e.preventDefault();
    console.log("submitted");
}

2.使用“.prevent”,这时onSubmit函数无需改动:

<form v-on:submit.prevent="onSubmit">

同理可以用“.stop”停止事件冒泡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值