jquery给button加点击事件_复习之v-on指令 (监听事件指令)

8f47266f261bc7e5c8bf5363356235f1.png

引入vue.js

    <!-- 引入vue.js -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

作用:可以监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

v-on指令简写:@

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button @click="handleClick(1)">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            },
            methods: {
                // 存放所需要调用的方法
                handleClick(num) {
                    this.counter += num;
                }
            }
        })
    </script>

3a8d35251e98955035fa974c28166470.png

如何使用v-on指令?

v-on指令后面“:”后的参数是要触发的事件类型。v-on的事件类型由参数指定。

1.直接把 JavaScript 代码写在 v-on 指令中,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:click="counter += 1">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            }
        })
    </script>

64860cf176c1538cadddebd2df253c08.png

但是很多事件处理逻辑是非常复杂的,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。

2.v-on 指令可以接收一个需要调用的方法名称,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:click="handleClick">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            },
            methods: {
                // 存放所需要调用的方法
                handleClick() {
                    this.counter ++
                }
            }
        })
    </script>

64860cf176c1538cadddebd2df253c08.png

methods中的函数,会直接代理给Vue实例对象,所以可以直接运行,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:click="handleClick">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            },
            methods: {
                // 存放所需要调用的方法
                handleClick() {
                    this.counter ++
                }
            }
        })
        vm.handleClick(); // 没有点击之前先执行一次函数
    </script>

3eb00f122569207fcc6def33b4b3b330.png

3.v-on指令可以在内联JavaScript 语句中调用方法,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:click="handleClick(1)">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            },
            methods: {
                // 存放所需要调用的方法
                handleClick(num) {
                    this.counter += num
                }
            }
        })
    </script>

3a8d35251e98955035fa974c28166470.png

在内联语句中使用事件对象时,可以利用特殊变量 $event,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:click="handleClick(1, $event)">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0
            },
            methods: {
                // 存放所需要调用的方法
                handleClick(num, e) {
                    this.counter += num;
                    console.log(e);
                }
            }
        })
    </script>

4.v-on指令可以绑定动态事件参数,如:

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on:[event]="handleClick(1, $event)">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0,
                event: 'click'
            },
            methods: {
                // 存放所需要调用的方法
                handleClick(num, e) {
                    this.counter += num;
                    console.log(e);
                }
            }
        })
    </script>

3a8d35251e98955035fa974c28166470.png

5.v-on指令可以不带参数绑定一个对象,如:

v-on=“{ 事件名:事件执行函数 }”,使用此种方法不支持函数传参&修饰符。

    <div id="app">
        <!-- 这里表示被vue控制的区域 -->
        <button v-on="{click:handleClick}">点击加 1</button>
        <p>按钮被点击了 {{ counter }} 次</p>
    </div>
    <script>
        const vm = new Vue({
            el: '#app', // 控制id为app的元素
            data: {
                // 存放所需要的数据
                counter: 0,
            },
            methods: {
                // 存放所需要调用的方法
                handleClick(e) {
                    this.counter ++ ;
                    console.log(e);
                }
            }
        })
    </script>

3a8d35251e98955035fa974c28166470.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值