事件处理

简介: 事件处理

1.事件的基本用法

<!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>事件的基本用法</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2>hello,{{name}}</h2>
        <button v-on:click="showInfo1">点我提示信息1</button>
        <button @click="showInfo2($event,66)">点我提示信息2</button>
    </div>
    <script>
        Vue.config.productionTip = false 
        new Vue({
            el:'#root', 
            data:{
                name:'JOJO'
            },
            methods:{
                showInfo1(event){
                    console.log(event)
                },
                showInfo2(evnet,num){
                    console.log(event,num)
                }
            }
        })
    </script>
</body>
</html>

效果:

总结:

使用v-on:xxx或@xxx绑定事件,其中xxx是事件名

事件的回调需要配置在methods对象中,最终会在vm上

methods中配置的函数,==不要用箭头函数!==否则this就不是vm了

methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象

@click="demo和@click="demo($event)"效果一致,但后者可以传参

2.事件修饰符

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>事件修饰符</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <style>
      *{
        margin-top: 20px;
      }
      .demo1{
        height: 50px;
        background-color: skyblue;
      }
      .box1{
        padding: 5px;
        background-color: skyblue;
      }
      .box2{
        padding: 5px;
        background-color: orange;
      }
      .list{
        width: 200px;
        height: 200px;
        background-color: peru;
        overflow: auto;
      }
      li{
        height: 100px;
      }
    </style>
  </head>
  <body>
    <div id="root">
      <h2>欢迎来到{{name}}学习</h2>
      <!-- 阻止默认事件 -->
      <a href="http://www.atguigu.com" @click.prevent="showInfo">点我提示信息</a>
      <!-- 阻止事件冒泡 -->
      <div class="demo1" @click="showInfo">
        <button @click.stop="showInfo">点我提示信息</button>
      </div>
      <!-- 事件只触发一次 -->
      <button @click.once="showInfo">点我提示信息</button>
      <!-- 使用事件的捕获模式 -->
      <div class="box1" @click.capture="showMsg(1)">
        div1
        <div class="box2" @click="showMsg(2)">
          div2
        </div>
      </div>
      <!-- 只有event.target是当前操作的元素时才触发事件 -->
      <div class="demo1" @click.self="showInfo">
        <button @click="showInfo">点我提示信息</button>
      </div>
      <!-- 事件的默认行为立即执行,无需等待事件回调执行完毕 -->
      <ul @wheel.passive="demo" class="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
      </ul>
    </div>
  </body>
  <script type="text/javascript">
    Vue.config.productionTip = false
    new Vue({
      el:'#root',
      data:{
        name:'尚硅谷'
      },
      methods:{
        showInfo(e){
          alert('同学你好!')
        },
        showMsg(msg){
          console.log(msg)
        },
        demo(){
          for (let i = 0; i < 100000; i++) {
            console.log('#')
          }
          console.log('累坏了')
        }
      }
    })
  </script>
</html>

效果:

总结:


Vue中的事件修饰符:

prevent:阻止默认事件(常用)

stop:阻止事件冒泡(常用)

once:事件只触发一次(常用)

capture:使用事件的捕获模式

self:只有event.target是当前操作的元素时才触发事件

passive:事件的默认行为立即执行,无需等待事件回调执行完毕


3.键盘事件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>键盘事件</title>
    <script type="text/javascript" src="../js/vue.js"></script>
  </head>
  <body>
    <div id="root">
      <h2>欢迎来到{{name}}学习</h2>
      <input type="text" placeholder="按下回车提示输入" @keydown.enter="showInfo">
    </div>
  </body>
  <script type="text/javascript">
    Vue.config.productionTip = false
    new Vue({
      el:'#root',
      data:{
        name:'尚硅谷'
      },
      methods: {
        showInfo(e){
          console.log(e.target.value)
        }
      },
    })
  </script>
</html>

效果:

欢迎来到尚硅谷学习

按下回车提示输入


总结:

键盘上的每个按键都有自己的名称和编码,例如:Enter(13)。而Vue还对一些常用按键起了别名方便使用

Vue中常用的按键别名:

回车:enter
删除:delete (捕获“删除”和“退格”键)
退出:esc
空格:space
换行:tab (特殊,必须配合keydown去使用)
上:up
下:down
左:left
右:right
注意:

系统修饰键(用法特殊):ctrl、alt、shift、meta

配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
配合keydown使用:正常触发事件
可以使用keyCode去指定具体的按键,比如:@keydown.13="showInfo",但不推荐这样使用

Vue.config.keyCodes.自定义键名 = 键码,可以自定义按键别名





相关文章
|
15天前
|
JavaScript 前端开发 编译器
方法事件处理器
方法事件处理器
|
4月前
|
前端开发 JavaScript UED
Vue3中的事件处理:事件绑定、事件修饰符、自定义事件
Vue3中的事件处理:事件绑定、事件修饰符、自定义事件
103 0
|
5月前
|
JavaScript 前端开发 API
JavaScript事件处理:探索DOM事件和事件监听器
JavaScript事件处理:探索DOM事件和事件监听器
43 0
|
6月前
|
JavaScript 前端开发
37Vue - 事件处理器(方法事件处理器)
37Vue - 事件处理器(方法事件处理器)
17 0
|
XML 缓存 NoSQL
事件监听思考
在整合在项目中,我们通常需要基于事件去触发另外的业务逻辑动作的完成。也即在我们做需求时,通常会基于不同的事件码来完成业务处理,此时可以考虑将其单独处理,基于观察者模式+策略模式。还有一种如果当Spring完成Bean的初始化,需要做一些特殊处理,此时除了使用InitializingBean,还可以使用监听完成一些定制化的初始化动作,实现ApplicationListener<ContextRefreshedEvent>。
104 0
事件监听思考
|
数据安全/隐私保护
事件监听
事件监听
62 0
事件监听
|
JavaScript 前端开发
在事件处理函数中的 this
本文内容主要是,针对事件处理函数中如何使用 this 的几种方法及区别。
231 0
|
JavaScript 前端开发
学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象
学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象
137 0
|
安全 程序员 编译器
正确调用事件处理程序
正确调用事件处理程序
121 0