首页 > 其他分享 >Vue(七)事件处理

Vue(七)事件处理

时间:2023-06-24 10:56:05浏览次数:32  
标签:事件处理 Vue name 修饰符 alert 事件

一、基本的事件处理

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>基本的事件</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <!-- 
        基本的事件:
            1.绑定事件使用v-on:XXX(例如v-on:click)指令,可以简写为@XXX的形式
            2.事件的回调需要设置在methods对象上,最终会出现在vm上
            3.由Vue管理的函数不要使用箭头函数
            4.调用函数不传参数时带不带括号都可以,例如 v-on:click="showInfo1" 和 v-on:click="showInfo1()"是一样的;
            无参函数,Vue会默认传入一个event,定义函数时 showInfo1(){} 或 showInfo1(event){} 都可以;
            但是有参函数,想要传入event就需要使用 $event 传参,例如 @click="showInfo2($event, '张三')"
     -->
    <body>
        <div id="root">
            <h1>欢迎来到{{name}}</h1>
            <!-- v-on:XXX指令用于事件的处理,缩写为@XXX -->
            <button v-on:click="showInfo1">事件一</button>
            <button @click="showInfo2($event, '张三')">事件二</button>
        </div>
    </body>
    <script>
        const vm = new Vue({
            el: "#root",
            data: {
                name: "JMS的世界"
            },
            methods: {
                showInfo1(event) {
                    alert("你好,世界!")
                },
                showInfo2(event, name) {
                    alert("你好" + name)
                }
            }
        })
    </script>
</html>

二、事件的修饰符

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>事件的修饰符</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <style>
        * {
            padding: 10px;
        }
        .d1 {
            margin-top: 10px;
            background-color: aqua;
        }
        .d2 {
            background-color: antiquewhite;
        }
        .d3 {
            height: 100px;
            width: 300px;
        }
        .d4 {
            height: 300px;
            width: 300px;
            overflow: auto;
        }
    </style>

    <body>

        <!-- 
            Vue中的时间修饰符:
                1.prevent:阻止默认事件的发生(例如a标签的跳转事件)
                2.stop:阻止事件冒泡
                3.once:事件只触发一次
                4.capture:使用事件的捕获模式
                5.self:只有event.target是当前操作的元素才能触发事件,也就是不能被其它元素的操作触发
                6.passive:默认事件立刻执行,无需事件回调执行完毕
         -->
        <div id="root">
            <h1>{{name}}</h1>

            <div>
                <!-- 这是一个普通a标签,点击会进行页面的跳转 -->
                <a :href="url">点我跳转百度1</a>

                <!-- 使用prevent阻止了默认事件的发生,这个a标签就不会再跳转了 -->
                <a :href="url" @click.prevent="showInfo1">点我跳转百度2</a>
            </div>

            <!-- 
                使用stop来阻止事件冒泡
                点击按钮事件冒泡被阻止,d1和d2的事件不触发 (触发1次事件)
                但是点击d2,并没有阻止事件冒泡,所以d2事件触发完成后,冒泡给d1,d1也会触发事件(触发2次事件)
            -->
            <div class="d1" @click="showInfo2">
                <div class="d2" @click="showInfo2">
                    <button @click.stop="showInfo2">触发事件2</button>
                </div>
            </div>

            <div>
                <!-- once使得事件只触发一次,所以第一次触发后事件就失效了 -->
                <button @click.once="showInfo2">触发一次事件2</button>
            </div>

            <!-- 
                捕获阶段是由外向内
                冒泡阶段是由内向外
                这里设置d1的事件在捕获阶段就开始执行,所以会先触发d1的事件再触发按钮的事件
            -->
            <div class="d1" @click.capture="showInfo3('最外层')">
                <button @click="showInfo3('按钮')">捕获阶段</button>
            </div>

            <!-- 
                这里使用self来修饰d1 和 d2的事件,现在它们不能被事件冒泡触发事件,只有要亲自操作他们本身时,它们的事件才会触发
                所以self同样可以阻止事件冒泡
             -->
            <div class="d1" @click.self="showInfo3('最外层')">
                <div class="d2" @click.self="showInfo3('中间层')">
                    <button @click="showInfo3('按钮')">self触发</button>
                </div>
            </div>

            <!-- 
                这里使用passive来使得默认事件立刻执行
                部分事件使用,并不常用
             -->
            <ul class="d4" @scroll.passive="showInfo4">
                <li class="d3" style="background-color: antiquewhite;"></li>
                <li class="d3" style="background-color: aqua;"></li>
                <li class="d3" style="background-color: aquamarine;"></li>
                <li class="d3" style="background-color: blueviolet;"></li>
            </ul>
        </div>
    </body>

    <script>
        const vm = new Vue({
            el: "#root",
            data: {
                name: "事件的修饰符",
                url: "https://www.baidu.com"
            },
            methods: {
                showInfo1() {
                    alert("跳转到百度")
                },
                showInfo2() {
                    alert("触发了事件2")
                },
                showInfo3(who) {
                    console.log("我是" + who)
                },
                showInfo4() {
                    for (let i = 0; i < 10000; i++) {
                        console.log(i)
                    }
                }
            }
        });
    </script>
</html>

 

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

标签:事件处理,Vue,name,修饰符,alert,事件
From: https://www.cnblogs.com/jmsstudy/p/17500803.html

相关文章

  • java编程开发之若依vue框架 --- 后台开发
    分页实现前端基于element封装的分页组件 pagination(opensnewwindow)后端基于mybatis的轻量级分页插件pageHelper(opensnewwindow)#前端调用实现1、前端定义分页流程  #后台逻辑实现@PostMapping("/list")//定义/list接口,用于查询出列表@ResponseBody//返......
  • vue学习第25天 移动WEB开发----响应式布局
    目标:1)响应式原理2)使用媒体查询完成响应式导航3)使用Bootstrap的栅格系统4)使用Bootstrap的响应式工具5)完成阿里百秀首页案例 目录:1)响应式开发2)Bootstrap前端开发框架3)Bootstrap栅格系统4)阿里百秀首页案例  ......
  • vue学习第26天 xxxx响应式页面制作
    项目地址:后续添加 1、布局分析nav2列、article7列、aside3列 2、屏幕划分分析 移动端布局总结1、移动端主流方案 2、移动端技术选型1)流式布局(百分比布局)2)flex布局(推荐)3)rem适配布局(推荐)4)响应式布局建议:我们......
  • java编程开发之若依vue --- 部署
      部署的大致步骤0.配置环境,jdk下载安装配置环境变量,Mysql下一步就好记住用户名和密码,Redis下载win版本运行即可,Maven下载配置环境变量修改本地库存放位置,Node下一步就好设置下淘宝的镜像源。JDK>=1.8(推荐1.8版本)Mysql>=5.7.0(推荐5.7版本)Redis>=3.0Maven>......
  • Vue 基本认识二:使用 Vue CLI 的 Vue 项目
    注意VueCLI(手脚架)创建项目需要安装Node.js,没安装的看这里。使用VueCLI创建与运行项目,看这里。VueCLI创建的项目文件夹和文件说明,看这里。 单文件组件定义和引入  render函数......
  • Vue CLI 创建的 Vue 项目解释
    src\assets目录这个目录存放静态文件src\components目录存放除App.vue以外的所有组件src\main.js文件/*该文件是整个项目的入口文件*///引入VueimportVuefrom'vue'//引入App组件,它是所有组件的父组件(引入组件时,扩展名“.vue”写不写无所谓)impo......
  • Vue CLI 安装与创建 Vue 项目
    官网地址前提:已经安装过Node第一步:全局安装手脚架npminstall-g@vue/cli#ORyarnglobaladd@vue/cli 第二步:创建Vue项目(注意要切换到想创建项目的目录)vuecreatexxx 第三步:启动项目npmrunserver ......
  • Vue(六):数据代理
    一、js中的Object.defineProptry方法<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>回顾Object.definePropetry方法</title><scripttype="text/javascript"src="........
  • Vue进阶(贰零零):window.onresize事件在vue项目中的应用
    属性window.onresize属性可以用来获取或设置当前窗口的resize事件的事件处理函数。在窗口大小改变之后,就会触发resize事件.//vue页面<template><divid='echart'>报表</div></template><script>exportdefault{data(){return{};......
  • Vue.js 过渡和动画
    学习目录:Vue.js简介Vue.js实例与数据绑定Vue.js计算属性和侦听器Vue.js条件渲染和列表渲染Vue.js事件处理Vue.js表单输入绑定Vue.js组件基础Vue.js组件通信Vue.js插槽Vue.js动态组件和异步组件Vue.js自定义指令Vue.js过渡和动画Vue.js混入Vue.js自定义事件和v-model......