vue9---事件监听 v-on

本文详细介绍了Vue.js中v-on指令的使用,包括基本语法、参数传递、各种修饰符的应用,如.stop用于阻止事件冒泡,.prevent防止默认行为,.keyCode和.keyAlias监听键盘按键,.native监听组件根元素的原生事件,以及.once确保回调只执行一次。
摘要由CSDN通过智能技术生成

事件监听 v-on: (@)

1. 基本使用

<button id = 'btn' @click: 'add'> + </button>
	<script>
		const bu = new Vue({
			el: '#btn',
			data: {
				count: 0
			},
			methods: {
				add(){
					this.count ++;
				},
				listen(abc){
					console.log(abc);
				},
				look(abc,event){
					console.log(abc,event);
				}
			}
		})
	</script>

2. v-on参数

  1. 在事件监听中,且该方法不需要参数,则可以不写小括号:

     @click='add'
     @click='add()'
    
  2. 需要传参,且参数不是事件本身

     @click='listen';  //MouseEvent
     @click='listen()';   //undefined
     @click='listen(123)';   //123
     @click='listen(abc)';   //vue报错,且undefined
     @click='listen("abc")';  //abc
    
  • 不写括号:则默认传入事件本身(总是传入第一个参数)
  • 不写实参:则默认未赋值,为undefined
  • 实参为数字:直接使用
  • 实参为不加引号的字符串:则认为是变量名,会在data中找,找不到则报错
  • 实参为字符串:当字符串使
  1. 参数要使用事件本身

     @click='look'     //MouseEvent
     @click='look()'   //undefined  undefined
      
     @click='look(123)'         //123 undefined
     @click='look(123,$event)'  //123 MouseEvent
     
     @click='look(abc)'         // vue报错,  undefined undefined
     @click='look(abc,$event)'  // vue报错,undefined MouseEvent
     
     @click='look("abc")'        //abc undefined
     @click='look("abc",$event)' // abc  MouseEvent
     
     @click='look("abc",event)'  //vue报错,abc undefined
    

3. v-on 修饰符

.stop修饰符 ——阻止冒泡事件

<div id = "app" @click = 'divClick'>
    aaaaaaaaa
    <button @click='btnClick'>an</button>
  </div>  
  <script src = '../vue.js'></script>
  <script>
    const app = new Vue({
      el: '#app',
      methods:{
        divClick(){
          console.log('div');          
        },
        btnClick(){
          console.log('button');
        }
      }
    })
  </script>

在这里插入图片描述
点击按钮,点击事件会冒泡到div中

阻止事件冒泡:

<button @click.stop='btnClick'>an</button>

.prevent修饰符——阻止默认事件

eg. form表单会自动提交

<form action="ba">
      <input type="submit" value="提交" @click='wait'>
</form>

一点击便自动提交
在这里插入图片描述

<form action="ba">
      <input type="submit" value="提交" @click.prevent='wait'>
</form>

点击后不自动提交
在这里插入图片描述

.{keyCode|keyAlias} —— 监听键盘按键

编码|简称

以后者为例

监听键盘所有按键:

<form action="ba">
   <input type="submit" value="提交" @keyup='keyUp'>
</form>

监听回车键:

<form action="ba">
   <input type="submit" value="提交" @keyup.enter='keyUp'>
</form>

.native修饰符——监听组件根元素的原生事件

自定义的组件 ,事件监听无效:
<aa id ="ba" @click='hello'> </aa>

生效:
<aa id ="ba" @click.native='hello'> </aa>

.once修饰符—— 只触发一次回调

<button @click.once='btnClick'>an</button>

不管点击多少次,都只调用一次btnClick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值