三,vue的基础语法之事件监听

在前端开发中,我们需要经常和用户交互,在这个时候我们就必须监听用户发生的时间,比如点击,拖曳,键盘事件等。

在vue中监听事件,我们使用v-on指令

1.v-on的基本使用

  • 我们用一个监听按钮的点击事件,来了解v-on的基本使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h2>计数:{{message}}</h2>
    <p>实现计数:{{message}}</p>
    <button v-on:click="add">+</button>
    <button v-on:click="sub">-</button>
    <!--<button v-on:click="add">+</button>-->
    <!--<button v-on:click="sub">-</button>-->
</div>

<script src="../js/vue.js"></script>
<script type="text/javascript">
    var app= new Vue({
            // el: "#app",
            // data: {
            //     message: 0
            // },
        //      methods: {
        //         add:function () {
        //             this.message++
        //         },
        //         sub:function () {
        //             this.message--
        //         }
        // }
        el: "#app",
        data: {
            message: 0
        },
        methods: {
            add: function () {
                this.message++
            },
            sub: function () {
                this.message--
            }
        }
        })
</script>

</body>
</html>

2.v-on的参数问题

– 如果该方法不需要额外参数,那么方法后的()可以不添加

  • 如果方法本身中有一个参数,那么会默认将原生事件event参数传递进去
  • 如果需要同时传入某个参数,同时需要event时,可以通过$event传入事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <button @click="btnClick1">按钮1</button>
    <button @click="btnClick2(456)">按钮2</button>
    <button @click="btnClick2(abc)">按钮3</button>
    <button @click="btnClick3(abc,$event)">按钮4</button>
</div>

<script src="../js/vue.js"></script>
<script type="text/javascript">
    var app= new Vue({
            el: "#app",
            data: {
                message: "hello vue",
                abc: 123
            },
        methods:{
                btnClick1(event){
                    console.log("btnClick1+"+event)
                },
                btnClick2(event){
                    console.log("btnClick2---------"+event)
                },
            btnClick3(abc,event){
                console.log("btnClick2---------"+event+abc)
            }
        }
        })
</script>

</body>
</html>

3.v-on修饰符

  • 在某些情况下,我们拿到event的目的可能是进行一些事件处理
  • Vue提供了修饰符来帮助我们方便的处理一些事件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div id="app">
    <!--1. .stop修饰符的使用-->
    <div @click="divClick">
        aaaaaaa
        <button @click.stop="btnClick">按钮</button>
    </div>

    <!--2. .prevent修饰符的使用-->
    <br>
    <form action="baidu">
        <input type="submit" value="提交" @click.prevent="submitClick">
    </form>

    <!--3. .监听某个键盘的键帽-->
    <input type="text" @keyup.enter="keyUp">

    <!--4. .once修饰符的使用-->
    <button @click.once="btn2Click">按钮2</button>
</div>

<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '你好啊'
        },
        methods: {
            btnClick() {
                console.log("btnClick");
            },
            divClick() {
                console.log("divClick");
            },
            submitClick() {
                console.log('submitClick');
            },
            keyUp() {
                console.log('keyUp');
            },
            btn2Click() {
                console.log('btn2Click');
            }
        }
    })
</script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值