Vue的 v-on 指令

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>

<body>
    <!-- 基本用法 -->
    <div id="app1">
        <p>{{counter}}</p>
        <button v-on:click='counter++'>+</button><!--在标签中声明函数-->
        <button v-on:click='counter--'>-</button>
        <br>
        <button @click='counter++'>+</button><!--语法糖(缩写)-->
        <button @click='counter--'>-</button>
        <br>
        <button @click='increment'>+</button><!--使用方法-->
        <button @click='decrement'>-</button>
    </div>
    <script>
        new Vue({
            el: '#app1',
            data: {
                counter: 0
            },
            methods: {
                increment: function () {
                    this.counter++;
                },
                decrement: function () {
                    this.counter--;
                }
            }
        })
    </script><hr>

    <!-- 参数传递问题 -->
    <div id="app2">
        <!-- 事件调用的方法没有参数 -->
        <button @click='btnClick1'>按钮1</button>
        <button @click='btnClick1()'>按钮2</button>
        <!-- 事件调用的方法有参数 -->
        <button @click='btnClick2("eyes++")'>按钮3</button>
        <button @click='btnClick2(name)'>按钮4</button>
        <!-- 事件调用的方法有参数,但不传参或不加括号 -->
        <button @click='btnClick3()'>按钮5</button> <!--不报错,传 undefined-->
        <button @click='btnClick3'>按钮6</button> <!--不报错,传 Event对象-->
        <!-- 方法定义时,我们需要event对象,也需要其他参数 -->
        <button @click='btnClick4'>按钮7</button> <!--event,undefined-->
        <button @click='btnClick4()'>按钮8</button> <!--undefined,undefined-->
        <button @click='btnClick4("eyes++")'>按钮9</button> <!--eyes++,undefined-->
        <button @click='btnClick4("eyes++",$event)'>按钮10</button> <!--手动获取event-->
    </div>
    <script>
        new Vue({
            el: '#app2',
            data: {
                name:'eyes++'
            },
            methods:{
                btnClick1(){
                    console.log('btn1的调用');
                },
                btnClick2(value){
                    console.log('--- ' + value + ' ---');
                },
                btnClick3(value){
                    console.log(value);
                },
                btnClick4(value,event){
                    console.log(value,event);
                }
            }
        })
    </script><hr>

    <!-- 修饰符的使用 -->
    <div id="app3">

        <!-- .stop 阻止冒泡 -->
        <div @click='divClick'>
            <button @click.stop='btnClick'>按钮</button>
        </div>

        <!-- .prevent 阻止默认事件 -->
        <form action="">
            <input type="submit" value="提交" @click.prevent='submitClick'>
        </form>

        <!--  
            按键修饰符:
            .enter (回车键) .tab  .delete  .esc  .space  .up  .down  .left  .right 
        -->
        <form action="">
            <input type="textarea" @keyup.delete='keyUp'>
        </form>
        
        <!-- .once 只执行一次回调 -->
        <button @click.once='doOnce'>click</button>
    </div>
    <script>
        new Vue({
            el:'#app3',
            data:{
                msg:'eyes++'
            },
            methods:{
                btnClick(){
                    console.log('btn的调用');
                },
                divClick(){
                    console.log('div的调用');
                },
                submitClick(){
                    console.log('阻止默认事件');
                },
                keyUp(){
                    console.log('按了一下删除');
                },
                doOnce(){
                    console.log('只能调一次');
                }
            }
        })
    </script>
</body>

</html>
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值