vue v-on

v-on

语法糖@
用法:
绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句,如果没有修饰符也可以省略。
用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。

1、事件调用的方法没有参数

在事件监听的时候,调用对应的方法,如果方法没有参数,可以不加()

<button type="button" @click="add">+</button>

或者

<button type="button" @click="add()">+</button>

这两个效果一样的

methods:{
    
    
	add(){
    
    
		this.counter ++
	}
}

2、有参数

1、有参数但是没写参数,也没有写括号

在事件定义时,省略了小括号,但是方法本身是需要参数的 ,这个时候,Vue会默认将浏览器产生的event事件对象作为参数传入到方法,所以当需要event对象的时候,就把event写到定义的函数的形参那,就相当于:
<button type=“button” @click=“btnClick2(event)”>按钮2

<button type="button" @click="btnClick2">按钮2</button>
methods:{
    
    
	btnClick2(event){
    
    
		console.log(event);
	}
}

2、有参数但是没写参数,调用的时候写了括号

加括号这个会输出undefined,就是跟函数有形参但是调用的时候没有传实参一样

<button type="button" @click="btnClick2()">按钮2</button>
methods:{
    
    
	btnClick2(abc){
    
    
		console.log(abc);
	}
}

3、有参数且需要event对象

方法定义的时候,需要 event 对象,同时又需要其它参数
在调用方法时,手动的获取到浏览器的event对象, $event 这是固定写法
这里如果调用的时候加了括号但是没有传参的话,event对象会输出,但是其它的普通的参数会输出undefined

<button type="button" @click="btnClick3(123,$event)">按钮3</button>
methods:{
    
    
	btnClick3(abc,event){
    
    
		console.log(abc,event);
	}
}

3、事件修饰符

v-on修饰符
在某些情况下,拿到event的目的是进行一些事件处理;
Vue提供了修饰符帮助我们处理一些事件

1、.stop

.stop - 调用 event.stopPropagation()

<div @click="divClick">
	<!-- .stop 阻止冒泡 调用 event.stopPropagation()   加了.stop button的事件就不再往上冒泡了,值返回自己的点击事件了 -->
	<button type="button" @click.stop="btnClick">按钮</button>
</div>
methods: {
    
    
	divClick() {
    
    
		console.log('divClick');
	},
	btnClick() {
    
    
		console.log("btnClick");
	}
}

2、.prevent

.prevent - 调用 event.preventDefault()

<div id="app">
	<a href="http://www.baidu.com" @click.prevent="alinkClick">百度一下 你就知道</a>
	<!--  .prevent 阻止了<a>标签的默认跳转行为,点击只会触发alinkClick事件,不会跳转页面 -->
</div>
methods: {
    
    
	alinkClick() {
    
    
		console.log("alinkClick")
	}
}

(下面的几个修饰符等我有时间详细写,可以看官网:Vue v-on

3、.{keyCode| keyAlias}

.{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调

4、.native

.native - 监听组件根元素的原生事件。

5、.once

.once - 只触发一次回调

猜你喜欢

转载自blog.csdn.net/weixin_44401120/article/details/115262455