03-Vue-事件

本文详细介绍了Vue.js中的事件处理,包括事件绑定、事件修饰符及其在面试中的常见应用,如.stop、.prevent、.capture、.self和.once。通过实例展示了如何在模板中使用事件,并解释了事件中的this指向及数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1).事件

1.方法的写法 在methods中写方法,供事件或者别的方法内部调用

方法的写法:由于是做了es6语法处理的 所以学过的所有方式的写法都行

new Vue({

  el:"#app",

  data:{},  

  methods:{

      fn1(){console.log("fn1")},

      fn2:function(){console.log("fn2")},

      fn3:()=>{console.log("fn3")},

      fn4,

      fn5,

      fn6                  

    }

})

(2).事件绑定

  • v-on: 和  @ 都是绑定事件的指令
  • 指令后面跟事件类型,值就是methds中的方法,可以加小括号也可以不加

(3)事件修饰符(面试)

  •  .stop 阻止冒泡,阻止从当前元素经过的所有冒泡行为
  •  .prevent 阻止默认事件
  •  .capture 添加事件侦听器时让事件在捕获阶段触发
  •  .self  其他元素的事件触发时 事件链经过它,无论是捕获还是冒泡阶段都不会触发它的事件,只有它自己是精准对象才会触发事件,  虽然它自己不会被别人影响,但是它自己的事件触发的时候还是会生成事件链经过其他元素,并不阻止继续冒泡到其他元素
  •  .once 事件只触发一次,触发完之后,事件就解绑
  •  多修饰符一起使用:连点

 <div id="app">

        <!-- 点击按钮执行函数,不管有没有() -->

        <button v-on:click='fn3'>change</button>

        <button v-on:click='fn3(100,200,$event)'>change</button>

        <!-- 语法糖 -->

        <button @click='fn3(100,200,$event)'>change</button>

        <!-- 绑定多个事件 -->

        <button v-on:click='fn3' @mouseenter="fn">change</button>

       

        <p>{{msg}}</p>

        <p>{{fn3}}</p>

 <!-- 事件链 -->

        <!-- 其他盒子只有@click时候。默认冒泡阶段触发,现在是捕获阶段触发。不论点击谁都会触发1 -->

        <div class="box1" @click.capture="fnclick1">

            1

            <!-- 其他盒子只有@click时候。点击3的时候,执行31 ;点击2的时候,执行2 -->

            <div class="box2" @click.self.stop="fnclick2">

                2

                <!-- 其他盒子只有@click时候。阻止了冒泡,点击3,只会打印3 -->

                <div class="box3" @click.stop="fnclick3">

                    3

                </div>

            </div>

        </div>

       

        <!-- 阻止了默认事件 -->

        <a href="hhttp://www.baidu.com" @click.prevent>baidu</a>

    </div>

    <script>

        var vm = new Vue({

            el: "#app",

            data: {

                msg: "hello"

            },

            methods: {

                fn: function () { },

                fn2: () => { },

                fn3(a, b, e) {

                    console.log(this === vm); //fn3回调函数,Vue内部再调用

                    vm.msg = "66"            //全局vm this.msg

                    console.log(a, b, e);

                },

                fn5() {

                    // 执行不同的业务

                    this.fn();

                    this.fn1();

                    this.fn3();

                },

                fnclick1() {

                    console.log(1);

                },

                fnclick2() {

                    console.log(2);

                },

                fnclick3() {

                    console.log(3);

                },

            },

        })       

    </script>

(4)事件中的this与数据操作(面试)

1. 方法中的this代表vm对象

    a.方法和ES5的函数中的this是vm对象

    b.ES6的箭头函数中的this就不是vm==>因此推荐事件的函数采用ES6的对象的方法写方法 这种写法

2. 操作数据: this.xx="新值"

//这里的修改会执行两步操作:

//a.修改内存data容器中的数据

//b.刷新UI==>重新设置innerHTML

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值