vue 第五天 (事件监听基础)

vue 第五天 (事件监听基础)

一般事件监听写的是 v-on:简化@

1、单击事件 v-on:click 简化 @click

<!--单击+1事件-->
<div id="vue_one">
    <h2>{{result}}</h2>
    <button @click="increment">+1</button>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        data: {
            result : 0
        },
        methods: {
            increment(){
                this.result++
            }
        }
    })
</script>

2、v-on 传参问题

如果传了多个参数的话没有event 我们需要将event加上个美元符号 $event

<!--单击+1-->
<div id="vue_one">
    <h2>{{result}}</h2>
    <button @click="increment('qwe',$event)">+2</button>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        data: {
            result : 0
        },
        methods: {
            increment(ev,event){
                console.log(ev+"/"+event)
                this.result++
            }
        }
    })
</script>

3、常用修饰符问题

3.1、阻止冒泡 (.stop)

当嵌套多个div 里面有很多个点击事件的话点击一个div会调用多个数据

正常出现冒泡代码

<!--单击按钮会出现两个点击事件-->
<div id="vue_one">
    <div @click="div1">
        <button @click="button1">点我</button>

    </div>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        data: {
            result: 0
        },
        methods: {
            div1(){
                console.log("div1");
            },
            button1(){
                console.log("button1");
            }
        }
    })
</script>

添加 .stop防止出现冒泡

<body>
<!--添加冒泡.stop 已经不会出现其他点击事件-->
<div id="vue_one">
    <div @click="div1">
        <button @click.stop="button1">点我</button>
    </div>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        data: {
            result: 0
        },
        methods: {
            div1(){
                console.log("div1");
            },
            button1(){
                console.log("button1");
            }
        }
    })
</script>

3.2、阻止默认方法的执行(.prevent)

比如form表单,默认的就是会自动的进行跳转

<!--显示跳转到form表单-->
<div id="vue_one">
    <form>
        <input type="submit" value="提交" @click="button1">
    </form>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        data: {
            result: 0
        },
        methods: {
            button1(){
                console.log("button1");
            }
        }
    })
</script>

添加属性 .prevent防止默认的方法

<!--.prevent阻止跳转了-->
<div id="vue_one">
    <form>
        <input type="submit" value="提交" @click.prevent="button1">
    </form>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        methods: {
            button1(){
                console.log("button1");
            }
        }
    })
</script>

3.3、只执行一次(.once)

<!--只点击一次有效果,多次就无效果-->
<div id="vue_one">
    <button @click.once="button1">点我</button>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        methods: {
            button1(){
                console.log("button1");
            }
        }
    })
</script>

3.4、某个键盘敲击事件的监听修饰符(@keyup.键盘按钮名称) 松开按键进行监听

<!--监听某一个键盘的按键,松手监听-->
<div id="vue_one">
    <input type="text" @keyup.esc="keyUp">
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        methods: {
            keyUp(){
                console.log("button1");
            }
        }
    })
</script>

3.5、修饰符可以串联

<!--修饰符可以串联-->
<div id="vue_one">
    <div @click="div1">
    <a href="www.baidu.com" @click.stop.prevent="doThat">12345</a>
    </div>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        methods: {
            div1(){
                console.log("div1");
            },
            doThat(){
                console.log("a");
            }
        }
    })
</script>

3.6、只能通过鼠标左右键调用函数 .left .right

<body>
<!--.left只能点击鼠标左键调用函数,.right只能点击鼠标右键调用函数-->
<div id="vue_one">
    <button @click.right="right">点我</button>
    <button @click.left="left">点我</button>
</div>
<script type="text/javascript">
    const vm = new Vue({
        el: '#vue_one',
        methods: {
            right(){
                console.log("right");
            },
            left(){
                console.log("left");
            }
        }
    })
</script>






花开一千年,花落一千年,花叶永不见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值