Vue事件绑定及事件绑定修饰符

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

于是乎,我自己开发了一款面试宝典,希望能帮到大家,也希望有更多的Python新人真正加入从事到这个行业里,让python火不只是停留在广告上。

微信小程序搜索:Python面试宝典

或可关注原创个人博客:https://lienze.tech

也可关注微信公众号,不定时发送各类有趣猎奇的技术文章:Python编程学习

事件绑定

v-on

给元素绑定对应事件,以下是对于点击事件的绑定

<div id="app">
    <button v-on:click="show">按钮</button>
    <button @click="show">按钮</button>
</div> 
new Vue({
	el: "#app",
    method: {
    	show: function(){
			alert("弹一下")
        }    
    }
})

如果获取到单次输入的改变,那么可以使用input事件

<input type="text" v-model="account" @input="getInputData">

跑马灯

这里有一个跑马灯效果可以玩耍

<div id="app">
    <h3 v-html="message"></h3>
    <button @click="start">开始</button>
    <button @click="stop">停止</button>
</div>
new Vue({
    el: "#app",
    data: {
        message: "这是一个跑马灯",
        sT: null, // 定时器实例
    },
    methods:{
        work(){
            this.message = this.message.substring(1) + this.message[0] 
            // 循环定时器所作的事情
        },
        start(){
            if (this.sT==null) { // 判断此时是否已有定时器开启
                console.log("开启定时器")
                this.sT = setInterval(this.work,400)
            } else {
                console.log("已经开启 不在开启")
            }

        },
        stop(){ // 关闭定时器 设置定时器变量为null
            console.log("关闭定时器")
            clearInterval(this.sT)
            this.sT = null
        }
    }
)}

事件绑定修饰符

阻止冒泡

比如一个按钮在一个div中,并且按钮和div均有自己的事件,那么此时点击按钮,事件会像冒泡一样从按钮开始一直到div进行触发,.stop修饰符用来阻止默认的事件触发行为

<div id="fDiv" @click="divClick">
    <button id="fBtn" @click="btnClick">按钮</button>
</div>
var vm = new Vue({
    el: "#fDiv", // 控制区域
    data: {},
    methods: {
        divClick(){
            console.log("div被点击了")
        },
        btnClick(){
            console.log("按钮被点击了")
        }
    },
})
  • 通过.stop修饰阻止冒泡
<div id="fDiv" @click="divClick">
    <button id="fBtn" @click.stop="btnClick">按钮</button>
</div>

阻止默认行为

比如像a标签这样的,在点击时他有默认的跳转动作,可以通过.prevent阻止该默认行为

<div id="fDiv">
	<a href="https://www.baidu.com" @click.prevent="aLink">去百度</a>
</div>
var vm = new Vue(){
    el: "#fDiv",
    methods:{
    	aLink(){
    		console.log("连接被点击")
        }
    }   
}

捕获事件

默认的事件触发处理机制是冒泡机制,capture代表具有该修饰的事件,会优先触发,脱离冒泡顺序;

也可理解为谁有该修饰符,先触发谁的事件

<div id="fDiv" @click.capture="divClick">
    <button id="fBtn" @click="btnClick">按钮</button>
</div>
var vm = new Vue({
    el: "#fDiv", // 控制区域
    data: {},
    methods: {
        divClick(){
            console.log("div被点击了")
        },
        btnClick(){
            console.log("按钮被点击了")
        }
    },
})

自身事件

capture和冒泡不同,.self只有是自身触发的当前的事件才真正执行处理的回调函数

并且.self只会阻止当前元素的事件触发行为

<div id="fDiv" @click.self="divClick">
    <button id="fBtn" @click.self="btnClick">按钮</button>
</div>
// 与上同

单次事件

使用.once只触发一次事件函数

<div id="fDiv">
    <a href="https://www.baidu.com" @click.prevent.once="aLink">去百度</a>
    <!-- 连接无法跳转的阻止事件 只会出现一次 -->
</div>
var vm = new Vue(){
    el: "#fDiv",
    methods:{
    	aLink(){
    		console.log("连接被点击")
        }
    }   
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李恩泽的技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值