美文网首页
二,vue中的事件处理

二,vue中的事件处理

作者: 扶光_ | 来源:发表于2022-10-02 16:59 被阅读0次

    大部分时候数据的变化都是由事件触发的,Vue中事件的绑定通过指令v-on完成,比如我们要添加一个点击事件就要写成v-on:click=" "可以简写为@click=" "当然双引号里面是需要写一个函数的,那么函数应该写在哪里呢?
vue2实现数据的双向绑定使用的是definedProperty,
vue3实现数据的双向绑定使用的是**es6的ProxyAPI **进行代理

    那么函数就要写在一个methods的对象里面

    为什么呢,因为写在data(){}数据里,当我们点击对象时指向的windows对象,而写在methods中的指向的是vue实例。

而现在我们要实现一个单击按钮弹出一个弹窗的函数.如下

 <button v-on:click="alertFn">单击弹出弹窗</button>  
      Vue.createApp({
        //数据
        data(){
          
        },
        //放置各种功能函数
        methods:{
            alertFn(){
                console.log(this);
                alert("弹出一个弹窗")
            }
        }
       }).mount("#app")
methods

现在我们来实现一个每单击1次就增加10px宽度的一个方法,结合前面的v-bind的方法

     <div class="box" :style="{
            width:w+'px'
        }"></div>
     <button v-on:click="Fn">单击增加10px宽度</button>  

 //数据
        data(){
            return{
                w:100
            }
        },
        //放置各种功能函数
        methods:{
            Fn(){
                this.w += 10
            }
        }

那么如果我们获取事件对象怎么办呢,如鼠标所在位置,屏幕x轴y轴位置

<button v-on:click="getFn($event)">单击获取事件对象</button>

 getFn(e){
                console.log(e);
            }

事件冒泡

 <div class="A" @click="dadFn">
            <div class="B" @click="sunFn"> 

            </div>
        </div>
 methods:{
           dadFn(){
            console.log("父盒子触发");
           },
           sunFn(){
            console.log("子盒子触发");
           }
        }

当我们单击子盒子的时候会同时触发子盒子和父盒子里面的函数,这就是事件冒泡,从里向外,往上触发


冒泡

那么我们不想让他触发父级的事件,所以要用到阻止事件冒泡

 sunFn(e){
            e.stopPropagation()
            console.log("子盒子触发");
           }

在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation()阻止事件冒泡
那么每次这样都很麻烦,所以vue中提供了很多事件修饰词,就是在事件后以点的形式来写

<div class="B" @click.stop="sunFn"> //阻止事件冒泡

            </div>
  • .stop 阻止事件冒泡;
  • .prevent 阻止默认事件;
  • .capture 使用事件捕获模式;
  • .self 只在自身触发(子元素不能触发);
  • .once 只触发一次;
  • .passive 默认事件立即触发,无视preventDefault。
    上面的修饰词可以一起使用如@click.stop.once就是阻止事件冒泡并且只触发一次

键盘事件

监听键盘上的键并作出对应的函数

登录
为了用户更好的体验,一般我们登陆的时候按键盘中的Enter键完成登陆,即监听键盘上的键(enter键值=13),触发登陆
 用户名: <input type="text" name="" id=""><br>
      密码<input type="password" @keydown="key"><br>
      <input type="button" @click="login" value="登录"> 

 methods:{
          login(){
            alert("登录成功");
          },
          key(e){
            if(e.keyCode === 13){
                this.login()
            }
          }
        }
  • 当我们要监督按下那个键去触发响应的事件要用@keydown.键名的形式
    如,我们按下键盘下的b键去触发一个log事件
 密码<input type="password" @keydown.b="x"><br>

    x(){
             console.log("b键按了");   
            }
  • 组合绑定,例当按键盘下ctrl+b键打印一个ctrl+b的字符串
    密码<input type="password" @keydown.alt.b="x"><br>

 x(){
             console.log("alt+b组合键按了");   
            }

所有的键名都可以当做修饰词,也不用事件函数e.key === 13这样的形式去做了

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

  • 系统修饰词绑定
  • .ctrl
  • .alt
  • .shift
  • .meta(就是键盘中四个小方块)

  • 精准触发
  • .exact
 密码<input type="password" @keydown.alt="x"><br>
//这个当你同时按下alt和a也可以触发,x函数
 密码<input type="password" @keydown.alt.exact="x"><br>
//只有单独按下alt键才可以触发

  • 鼠标修饰符
  • .left
  • .right
  • .middle
    鼠标左键等等

相关文章

  • 二,vue中的事件处理

    大部分时候数据的变化都是由事件触发的,Vue中事件的绑定通过指令v-on完成,比如我们要添加一个点击事件就要写成v...

  • vue-事件

    title: vue-事件处理date: 2017-03-23 vue 事件 本文介绍vue组件的事件处理,并通过...

  • Vue中的事件处理

    Vue中的事件分两类,一类是原生事件,另一类是自定义事件原生事件使用的地方,一个是直接定义在元素上的;另一个是定义...

  • vue中的修饰符

    事件修饰符 使用vue,让代码中只有纯粹的数据逻辑,而不是去处理DOM事件细节。 ---事件修饰符vue事件修饰符...

  • vue基础

    一,vue基础 数据绑定列表循环 事件处理 在script标签中 //实例化vue var app=new Vue...

  • 在vue中使用.stop阻止单击事件继续传播

    一、vue的事件修饰符 为了不在方法中处理DOM事件细节,vue中提供6个事件修饰符。分别是: .stop .pr...

  • vue之事件(二)

    vue中可以使用v-on进行事件处理。当然v-on也有简写方式 [@] 1.事件监听的好处?所有的 Vue.js ...

  • Vue 知识总结

    前言: 基于vue 2+ 写一份知识总结,可以说是学习笔记 目录: 一、vue实例的基本结构二、vue事件处理、绑...

  • Vue知识总结(0)

    前言: 基于vue 2+ 写一份知识总结,可以说是学习笔记 目录: 一、vue实例的基本结构二、vue事件处理、绑...

  • vue之事件修饰符的使用

    vue中可以使用 v-on 指令绑定事件监听器,监听 DOM 事件,而在事件处理的程序中,为了能有更纯粹的数据逻辑...

网友评论

      本文标题:二,vue中的事件处理

      本文链接:https://www.haomeiwen.com/subject/ncwjartx.html