Vue事件处理 - 事件修饰符

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 事件修饰符

目录

事件修饰符

事件修饰符

设置导航

stop修饰符

self修饰符

触发一次

阻止默认行为

模态框实现1

总结


事件修饰符

事件修饰符

如下:

.stop

.prevent

.capture

.self

.once

设置导航

导航父元素和子元素设置不同的点击事件时。

示例如下:

<script src="../lib/vue.js"></script>
<div id="box">
    <ul @click="handleUlClick">
        <li @click="handleLiClick">11111</li>
        <li>22222</li>
        <li>33333</li>
    </ul>
</div>
<script>
    let vm = new Vue({
        el:'#box',
        data:{},
        methods : {
            handleUlClick() {
                console.log('ul click');
            },
            handleLiClick() {
                console.log('li click')
            }
        }
    })
</script>

当点击第一个li时,会触发两个事件。

效果如下:

stop修饰符

使用stop可以阻止冒泡(如果没有stop 则会触发两个点击事件)

示例如下:

<ul @click="handleUlClick">
    <li @click.stop="handleLiClick">11111</li>
    <li>22222</li>
    <li>33333</li>
</ul>

self修饰符

设置自己触发 子点击不会触发。

示例如下:

<ul @click.self="handleUlClick">
    <li @click.stop="handleLiClick">11111</li>
    <li @click="handleLiClick">22222</li>
    <li>33333</li>
</ul>

触发一次

使用once修饰符,可用来实现只触发一次的事件。

示例如下:

<li @click.once="handleLiClick">33333</li>

阻止默认行为

可使用prevent修饰符来实现,阻止标签默认行为。

示例如下:

<a href="http://www.baidu.com" @click.prevent>跳转</a>

常用在form表单跳转之前,进行验证。

模态框实现1

利用事件和事件修饰符,简单实现一个登录窗口的显示和隐藏。

示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #overlay {
            margin: 0 auto;
            border : 1px solid red;
            width:400px;
            height:300px;
        }

        #center {
            text-align: center;
            margin:20px auto;
        }

        #center div {
            margin-top:20px;
        }
    </style>
</head>
<body>
<script src="../lib/vue.js"></script>
<div id="box">
    <!--模态框1-->
    <button @click="isShow=true">show</button>
    <div id="overlay" v-show="isShow" @click="isShow=false">
        <div id="center" @click.stop>
            <div>用户名:<input type="text"></div>
            <div>密码:<input type="password"></div>
            <div>
                <button>登录</button>
            </div>
        </div>
    </div>
</div>
<script>
  let vm = new Vue({
      el : '#box',
      data : {
          isShow : false
      },
      methods : {

      }
  })
</script>
</body>
</html>

效果如下:

点击show按钮显示登录窗口,然后点击登录窗口中表单外隐藏登录窗口。

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 事件修饰符

猜你喜欢

转载自blog.csdn.net/json_ligege/article/details/145579873
今日推荐