Vue学习:事件处理(与用户产生交互-点击)

news2025/1/15 17:44:23

Vue对元素绑定事件,需要使用指令,也就是v-开头


 v-on:当什么什么时候时候

点击-出现弹窗:使用method方法

   <!-- 准备容器 -->
    <div id='root'> 
        <h2>欢迎页面,你好 {{name}}</h2>
        <!-- v-on:click 当元素被点击时候  展示回调函数去调用-->
        <button v-on:click="showInfo">点我提示事件</button>

    </div>
    <script>
        new Vue({ 
            el: '#root',
            data: {   
                    name:'Amy',
                    },
            methods:{//方法
                showInfo(){
                    alert('欢迎来到故宫')
                }

            },
        });
    </script>


 测试有没有接受参数

     methods:{//方法
                showInfo(a,b,c){//可以接受参数吗
                    console.log(a,b,c)//发现可以接收一个参数,为时间对象,PointerEvent 
                    //alert('欢迎来到故宫')
                }

接收的参数是事件对象,可以获取事件对象的一些参数,里面的this是vm,Vue实例对象 

      const vm=  new Vue({ 
            el: '#root',
            data: {   
                    name:'Amy',
                    },
            methods:{//方法
                showInfo(event){//可以接受参数吗
                    console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                    //alert('欢迎来到故宫')
                    console.log(event.target);//获取元素
                    console.log(event.target.innerText);
                    console.log(this===vm)//此处的this是vm Vue实例对象
                }

            },
        });

但是如果将函数写成箭头函数 this指

        showInfo:(event)=>{//可以接受参数吗
                    console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                    //alert('欢迎来到故宫')
                    console.log(event.target);//获取元素
                    console.log(event.target.innerText);
                    console.log(this)//此处的this是window
                }

当点击按钮,Vue发现需要执行showInfo函数,于是去vue实例中调用此方法,并且传入一个event,如果是箭头函数,就没有自己的this,就往外面找,就是window


所以:所有被Vue管理的函数需要写成普通函数,不要是箭头函数


简写:v-on:  =======@

    <!-- 准备容器 -->
    <div id='root'> 
        <h2>欢迎页面,你好 {{name}}</h2>
        <!-- v-on:click 当元素被点击时候  展示回调函数去调用-->
        <button v-on:click="showInfo">点我提示事件</button>
        <button @click="showInfo">点我提示事件</button>

    </div>
    <script>
      const vm=  new Vue({ 
            el: '#root',
            data: {   
                    name:'Amy',
                    },
            methods:{//方法
                showInfo(event){//可以接受参数吗
                    console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                    //alert('欢迎来到故宫')
                    console.log(event.target);//获取元素
                    console.log(event.target.innerText);
                    console.log(this===vm)//此处的this是vm Vue实例对象
                }
                //  showInfo:(event)=>{//可以接受参数吗
                //     console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                //     //alert('欢迎来到故宫')
                //     console.log(event.target);//获取元素
                //     console.log(event.target.innerText);
                //     console.log(this)//此处的this是window
                // }

            },
        });

还想传入参数使用小括号():但是没有event事件了

  <button @click="showInfo2(66)">点我提示事件2</button>


  showInfo2(number){//可以接受参数吗
                    console.log(number);//发现可以接收一个参数,为时间对象,PointerEvent 
               
                }

解决办法:使用$event占位

<button @click="showInfo2(66,$event)">点我提示事件2</button>
    showInfo2(number,event){//可以接受参数吗
                    console.log(number);//发现可以接收一个参数,为时间对象,PointerEvent 
                    console.log(event)
               
                }

可以变换顺序

传参+不传参 

 

  <!-- 准备容器 -->
    <div id='root'> 
        <h2>欢迎页面,你好 {{name}}</h2>
        <!-- v-on:click 当元素被点击时候  展示回调函数去调用-->
        <button v-on:click="showInfo1">点我提示事件1</button>
        <button @click="showInfo2($event,66)">点我提示事件2</button>

    </div>
    <script>
      const vm=  new Vue({ 
            el: '#root',
            data: {   
                    name:'Amy',
                    },
            methods:{//方法
                showInfo1(event){//可以接受参数吗
                    console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                    //alert('欢迎来到故宫')
                    console.log(event.target);//获取元素
                    console.log(event.target.innerText);
                    console.log(this===vm)//此处的this是vm Vue实例对象
                },
                //  showInfo:(event)=>{//可以接受参数吗
                //     console.log(event);//发现可以接收一个参数,为时间对象,PointerEvent 
                //     //alert('欢迎来到故宫')
                //     console.log(event.target);//获取元素
                //     console.log(event.target.innerText);
                //     console.log(this)//此处的this是window
                // }
                showInfo2(event,number){//可以接受参数吗
                    console.log(number);//发现可以接收一个参数,为时间对象,PointerEvent 
                    console.log(event)
               
                }

            },
        });
    </script>

最终这 些函数的在Vue实例中 

 区别:name是数据代理,从根上来源于_date.

showInfo1和showInfo2不做数据代理,如果将函数写在data里面就会发生数据代理,会让Vue很累,vue去做数据代理调用函数,以后函数是不会变的,所以是setter getter没有意义


事件的基本使用:
        1、使用v-on:xxx或@xxx绑定事件,其中xxx是时间名

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

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

        4、methods中配置的函数,不要用箭头函数,否则this指向的不是vm实例

        5、@click="函数名"  和@click="函数名($event,参数)",效果一致,可以传参

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(附源码)小程序 法律全书 毕业设计 280844

小程序spring boot法律全书管理系统 摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;小程序法律全书被用…

计算机毕业设计ssm+vue基本微信小程序的灾情救助系统 uniapp 小程序

项目介绍 自新冠疫情爆发以来,给各行各业带来了前所未有的挑战。国务院、党中央高度重视灾情救助工作,研究出一系列重要的措施和方法。并广泛利用信息化技术手段,对灾情信息发布、救助管理等进行管理。对于受灾地区来说,存在管理难度大,手段单一,灾民流动性复杂等问题。单靠人…

git 暂存当前分支修改,切换到别的分支

收藏&#xff0c;原文链接Git学习记录-git保留/丢弃当前分支修改并切换至其他分支 - 爱写bug的程序员 - 博客园 (cnblogs.com) 笔者在本地终端进行 git 工作目录的相关处理时&#xff0c;遇到由于某种情况需要使用 git checkout 命令切换到其他分支的情景。此时&#xff0c;若…

3 - 线程池 Java内置的线程池 - ExecutorService

1、ExecutorService的介绍 ExecutorService 接口继承了Executor 接口&#xff0c;是Executor 的子接口。 Executors类 提供工厂方法用来创建不同类型的线程池。Executors是工具类&#xff0c;他提供对ThreadPoolExecutor的封装&#xff0c;会产生几种线程池供大家使用。 关于…

derby 转 mysql

背景 nacos使用standalone方式启动&#xff0c;数据存储到内置的derby数据库中&#xff0c;现在要更改为集群启动&#xff0c;原数据要转成mysql。 执行过程 1.nacos内置的derby数据打包后放到本地 tar -cvf data.tar nacos/data/derby-data 2.通过idea添加Apache Derby&a…

【区块链】Ankr被黑引发的思考

机会 三明治交易、夹子机器人、抢跑、抢新、抢购、秒杀&#xff0c;相信这些词你都听说过了&#xff0c;区块链上的各种套利操作&#xff0c;基本上都有一个大前提&#xff0c;就是监听链上最新的未打包交易&#xff0c;才能在第一时间抢占先机。 前段时间Ankr被黑&#xff0…

进阶 - Git的自定义

Git的自定义 忽略特殊文件 有些时候&#xff0c;你必须把某些文件放到Git工作目录中&#xff0c;但又不能提交它们&#xff0c;比如保存了数据库密码的配置文件啦&#xff0c;等等&#xff0c;每次git status都会显示Untracked files ...&#xff0c;有强迫症的童鞋心里肯定不…

大学生网页制作期末作业——html+css+javascript+jquery旅游官网6页 html大学生网站开发实践作业 web网页设计实例作业

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

java alibaba fastjson自定义序列化反序列化(教你解决问题思路)

大家版本不一样方式可能不一样&#xff0c;我不管你的fastjson版本是哪个&#xff0c;按照我这个思路去弄就行 写一个JSONObject类&#xff0c;导入fastjson的JSONObject&#xff0c;然后CTRL鼠标左键点进去看JSONObject源码&#xff0c;然后点击IDEA的左上角select opened fil…

掘金量化如何精准选股?

说起掘金量化如何精准选股的这个问题&#xff0c;相信大家也很期待&#xff0c;就比如说我们在量化投资中&#xff0c;一方面对股票的涨跌是需要灵活的去判断&#xff0c;才能知晓这其中有哪些是我们应该选择的股票&#xff0c;但是要自己去观察&#xff0c;也是很麻烦&#xf…

【Python项目】毕业设计必备,Python基于面向对象+tkinter打造学生信息管理系统 | 附源码

前言 halo&#xff0c;包子们上午好 很多学计算机的小伙伴应该都知道&#xff0c;毕业设计是一个头疼的东西 今天的话小编这边给大家准备好了一个Python基于面向对象tkinter打造学生信息管理系统 这不是毕业设计必备项目 说实话操作起来还是有那么一点点的难度的&#xff0c;但…

Spring Boot源码学习:自动配置与自定义注解详解

入门 RestContrller :此注解标记的类下的 所有 方法均会返回一个 domain 对象以代替视图Controller、ResponseBody 的缩写使用 Jackson2 以及 MappingJackson2HttpMessageConverter 类自动转换对象为 JSONSpringBootApplication&#xff1a;快捷注释&#xff0c;包含以下内容C…

“新十条”来了,精准防控是为了“行稳致远”

文|螳螂观察 作者|松雅湖、小江 形势正在快速变化&#xff0c;朝越来越好的方向。 12月7日&#xff0c;国务院联防联控机制发布防疫“新十条”措施&#xff0c;指向精准&#xff0c;要求明确&#xff0c;既要疫情防控精准化、科学化&#xff0c;也要防疫成果“行稳致远”&am…

sentence Bert解读及代码示例

0-前序 Bert已经是相当6了&#xff0c;但在STS&#xff08;语义文本相似性&#xff09;任务中&#xff0c;需要将两个句子都输入到网络中&#xff0c;也就是说要过模型&#xff0c;这样计算量就大了。如下是文本相似性&#xff0c;并不是语义。 from transformers import Ber…

RabbitMQ、RocketMQ、Kafka 三大组件详细教程,一文带你学完全部知识

RabbitMQ RabbitMQ各组件的功能 Broker &#xff1a;一个RabbitMQ实例就是一个BrokerVirtual Host &#xff1a;虚拟主机。相当于MySQL的DataBase&#xff0c;一个Broker上可以存在多个vhost&#xff0c;vhost之间相互隔离。每个vhost都拥有自己的队列、交换机、绑定和权限机…

项目执行管理的8个步骤

常言道&#xff1a;说起来容易&#xff0c;做起来难。在项目执行过程中&#xff0c;许多事情可能会出错。这就是为什么执行过程中的监控和跟踪很重要。 项目执行&#xff0c;如同项目管理一样&#xff0c;被分解成若干步骤&#xff0c;以确保你不会忽视任何关键的东西。八个项…

如何查看Chrome浏览器的页面缓存内容【详细教程】

如何查看浏览器页面缓存内容——代码&控制台知识调用前言引入控制台输入代码查看在控制台application查看知识调用 文章可能需要用到的知识&#x1f525;&#x1f525;&#x1f525;浏览器缓存有哪些&#xff08;通用缓存有哪些&#xff09; 前言引入 浏览器有多种缓存&a…

C++/Qt编程规范

文章目录一、头文件规范二、变量命名三、信号和槽四、注释一、头文件规范 在编码中对头文件的引用&#xff0c;建议按照以下顺序进行&#xff1a; 1)类定义头文件 2)其他库头文件 a)Qt模块头文件 b)XTAL平台框架模块头文件 c)第三方库头文件 d)自定义公共库头文件 二、变量命…

Linux7层负载均衡-Haproxy

Linux7层负载均衡 概述&#xff1a; 是一款高性能的负载均衡软件。 因为其专注于负载均衡这一些事情&#xff0c; 因此与nginx比起来在负载均衡这件事情上做更好&#xff0c;更专业。 特点&#xff1a; •支持tcp / http 两种协议层的负载均衡&#xff0c;使得其负载均衡功能…

【KNN分类】基于模拟退火优化KNN、蝗虫算法优化KNN实现数据分类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …