Vue系列(三)之 基础语法下篇【事件处理,表单综合案例,组件通信】

news2024/11/17 23:44:38

一. 事件处理

在 Vue.js 中,v-on 指令被用于监听 DOM 事件,并在事件触发时执行相应的方法,这些方法就是事件处理器。v-on 指令有简写形式 @,例如 @click="handleClick" 会监听点击事件并执行 handleClick 方法。

事件处理器在 Vue.js 组件中十分重要,因为使用事件处理器可以让用户与组件进行交互,例如按钮点击、表单提交等操作。

使用 Vue.js 中的事件处理器非常简单,只需要在需要监听事件的元素上通过 v-on 指令来绑定方法。例如,下面的示例代码展示了一个按钮,并在点击时调用一个名为 clickMe 的方法:

		<div id="app">
			<button type="button" @click="clickMe">点我</button>
		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data(){
					return {
						msg:'今天的不开心就到此为止吧!'
					}
				},
				methods:{
					clickMe(){
						alert(this.msg)
					}
						
				}
			})
		</script>

上述代码中,methods 对象中的 clickMe方法为点击事件的处理器,方法中使用 alert t弹窗弹出提示信息。 

1.1 事件修饰符

Vue通过由点(.)表示的指令后缀来调用修饰符

      .stop

      .prevent

      .capture

      .self

      .once

			      <!-- 阻止单击事件冒泡 -->
			
			      <a v-on:click.stop="doThis"></a>
			
			      <!-- 提交事件不再重载页面 -->
			
			      <form v-on:submit.prevent="onSubmit"></form>
			
			      <!-- 修饰符可以串联  -->
			
			      <a v-on:click.stop.prevent="doThat"></a>
			
			      <!-- 只有修饰符 -->
			
			      <form v-on:submit.prevent></form>
			
			      <!-- 添加事件侦听器时使用事件捕获模式 -->
			
			      <div v-on:click.capture="doThis">...</div>
			
			      <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
			
			      <div v-on:click.self="doThat">...</div>
			
			      <!-- click 事件只能点击一次 -->
			
			      <a v-on:click.once="doThis"></a>

 1.2 按键修饰符

 Vue允许为v-on在监听键盘事件时添加按键修饰符:

      <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->

      <input v-on:keyup.13="submit"> 

Vue为最常用的按键提供了别名

      <!-- 同上 -->

      <input v-on:keyup.enter="submit">

 全部的按键别名:

      .enter         .tab         .delete (捕获 "删除" 和 "退格" 键)         .esc         .space

        .up         .down        .left         .right         .ctrl          .alt           .shift        .meta     

二. 表单的综合案例

		<div id="app">
			姓名:<input name="name" v-model="name" /><br>
			密码:<input type="password" v-model="pwd" /><br>
			性别:<span v-for="s in sexList">
				<input type="radio" name="sex" v-model="sex" :value="s.id">{{s.name}}
			</span><br>
			爱好:<span v-for="h in hobbies">
				<input type="checkbox" name="myHobby" v-model="myHobby" :value="h.id">{{h.name}}
			</span><br>
			籍贯:<select name="myAddr" v-model="myAddr">
				<option v-for="a in address" :value="a.id">{{a.name}}</option>
			</select><br>
			个人简介:<textarea v-model="sign" cols="8" rows="5"></textarea><br>
			确认:<input type="checkbox" v-model="ok" /><br>
			<button v-show="ok" @click="dosubmit">提交</button>

		</div>
		<script type="text/javascript">
			new Vue({
				el:"#app",
				data(){
					return {
						name:'小灰灰',
						pwd:'123456',
						sex:1,
						sexList:[{
							name:'男',id:1
						},{
							name:'女',id:2
						},{
							name:'未知',id:3
						}],
						hobbies:[{
							name:'跑步',id:1
						},{
							name:'打游戏',id:2
						},{
							name:'唱歌',id:3
						},{
							name:'绘画',id:4
						}],
						myHobby:[null],
						address:[{
							name:'湖南',id:1
						},{
							name:'湖北',id:2
						},{
							name:'云南',id:3
						},{
							name:'贵州',id:4
						}],
						myAddr:null,
						sign:null,
						ok:false
					}
				},
				methods:{
					dosubmit(){
						var obj = {};
						obj.name = this.name;
						obj.pwd = this.pwd;
						obj.sex = this.sex;
						obj.hobby = this.myHobby;
						obj.address = this.myAddr;
						obj.sign = this.sign;
						obj.ok = this.ok;
						console.log(obj);
						
					}
				}
			})
		</script>

效果:

 

三. 组件通信

3.1 组件简介

 组件(Component)是Vue最强大的功能之一

 组件可以扩展HTML元素,封装可重用的代码

 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

3.2 全局和局部组件

      全局组件:Vue.component(tagName, options),tagName为组件名,options为配置选项。

      局部组件: new Vue({el:'#d1',components:{...}})

      注册后,我们可以使用以下方式来调用组件:

      <tagName></tagName>

3.3 props

      props是父组件用来传递数据的一个自定义属性。

      父组件的数据需要通过props把数据传给子组件,子组件需要显式地用props选项声明 "prop"

注1:因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods以及生命周期钩子等。仅有的例外是像el这样根实例特有的选项。

注2:当我们定义这个 <button-counter> 组件时,你可能会发现它的data并不是像这样直接提供一个对象

        data: {

          count: 0

        }

        取而代之的是,一个组件的data选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝:

        data: function () {

          return {

            count: 0

          }

        }

注3:定义组件名的方式有两种

         短横线分隔命名(建议使用)

         Vue.component('my-component-name', { /* ... */ }),引用方式:<my-component-name>

         首字母大写命名

         Vue.component('MyComponentName', { /* ... */ }),引用方式: <my-component-name>和<MyComponentName>都是可接受的  

注4:HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 DOM 中的模板时,

         camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名:

         props: ['postTitle'],<my-tag post-title="hello!"></my-tag>

注5:props: ['title', 'likes', 'isPublished', 'commentIds', 'author']

         每个 prop 都有指定的值类型       

  props: {

           title: String,

           likes: Number,

           isPublished: Boolean,

           commentIds: Array,

           author: Object,

           callback: Function,

           contactsPromise: Promise // or any other constructor

     

     

     

     

      

     

      

     

     

    

   

      

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

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

相关文章

视频剪辑软件Premiere Pro 2022 mac(pr2022) v22.6.2中文版

Premiere Pro 2022 mac不仅可以帮助用户对各种视频进行剪辑、旋转、分割、合并、字幕添加、背景音乐等基础的处理&#xff0c;pr2022 mac还能帮助用户进行视频颜色校正、颜色分级、稳定镜头、调整层、更改片段的持续时间和速度、效果预设等操作&#xff0c;功能强大。 ​Premie…

服务注册发现_什么是服务治理

为什么需要服务治理 在没有进行服务治理前,服务之间的通信是通过服务间直接相互调用来实现的。 过程&#xff1a; 武当派直接调用峨眉派和华山派&#xff0c;同样&#xff0c;华山派直接调用武当派和峨眉派如果系统不复杂&#xff0c;这样调用没什么问题。但在复杂的微服务系统…

七、高斯朴素贝叶斯算法(Gaussian NB,Gaussian Naive Bayes)(有监督学习)

高斯朴素贝叶斯Gaussian Naive Bayes (GaussianNB). 可通过 partial_fit 对模型参数进行在线更新 一、算法思路 所谓高斯贝叶斯指的便是假定样本每个特征维度的条件概率均服从高斯分布&#xff0c;进而再根据贝叶斯公式来计算得到新样本在某个特征分布下其属于各个类别的后验…

计算机组成原理之硬件的基本组成,深入介绍两大计算机结构体系,从底层出发认识计算机。

大家好&#xff0c;欢迎阅读《计算机组成原理》的系列文章&#xff0c;本系列文章主要的内容是从零学习计算机组成原理&#xff0c;内容通俗易懂&#xff0c;大家好好学习吧&#xff01;&#xff01;&#xff01; 更多的优质内容&#xff0c;请点击以下链接查看哦~~ ↓ ↓ ↓ …

【Log】为类中的所有日志打印添加前缀

文章目录 前言验证探索后记 前言 有没有一种办法&#xff0c;在一个类中(业务逻辑)。logger.info 的时候自动加上日志前缀&#xff0c;这样子查日志更方便。stackoverflow 上面有对该问题的讨论&#xff0c;实测可用&#xff0c;这里记录一下。 来自stackoverflow 简洁可用的…

离线部署 python 3.x 版本

文章目录 离线部署 python 3.x 版本1. 下载版本2. 上传到服务器3. 解压并安装4. 新建软连信息5. 注意事项 离线部署 python 3.x 版本 1. 下载版本 python 各版本下载地址 本次使用版本 Python-3.7.0a2.tgz # linux 可使用 wget 下载之后上传到所需服务器 wget https://www.py…

使用Go开源的一款性能监控软件,开箱即用,自动化图表生成

使用Go开源的一款性能监控软件&#xff0c;开箱即用&#xff0c;自动化图表生成。 uptrace介绍 uptrace是一体化工具&#xff0c;优化性能并监视错误和日志的开源监控系统。Uptrace是一个经济高效的跟踪解决方案&#xff0c;可帮助您监控、了解和优化复杂的分布式系统。对您的…

运行springBoot项目

本文背景&#xff1a;接手后端Maven管理的springBoot项目&#xff0c;但是不太清楚具体怎么运行项目 写此文章作为纪念 参考链接&#xff1a;IDEA运行SpringBoot项目&#xff08;图文详细讲解&#xff09;_idea项目运行_叫我小楠的博客-CSDN博客 步骤如下&#xff1a; 1.设…

3D打印预处理软件——CHITUBOX Pro 1.4.1

CHITUBOX PRO登场 革命性的3D打印数据处理软件&#xff0c;让你发挥3D打印的无限潜力 支持多种主流CAD文件格式 除了传统的stl和obj文件&#xff0c;CHITUBOX Pro还支持导入各种主流的CAD文件格式&#xff0c;包括3ds、3mf、3dm、stp、step、wrl、x3d、sat、sab、dae、dxf、f…

uniapp合法域名配置

首先打开微信开发者平台 找到开发管理 打开开发设置 找到服务器域名>修改 request 写入域名前缀即可 > 完成 重启小程序即可 感谢观看

React redux更新数据的诡异特征==》彻底掌握redux更新state机制的精髓

此文章是跟随我上一篇文章《Redux Toolkit中action派发但state值不更新的原因》写的。 本来一切都搞定了&#xff0c;此时我突发奇想&#xff1a; 如果让api服务端不发送包含x-pagination的header信息&#xff0c;web端会不会报错。因为按照web端 redux原有的逻辑&#xff1a;…

【PowerShell】PowerShell的Core版本的额外配置

在PowerShell 7.1 安装完成后,默认情况下打开PowerShell 会直接进入到系统内置的PowerShell,如果希望通过远程连接或者PowerShell Web Access 进入到PowerShell 7环境的界面,就需要进行环境的再配置才能实现PowerShell 7.1 的环境连接。需要为外部的环境提供连接的话需要按照…

GNU C中({})表达式的返回值

文章目录 先放结论废话({})复合表达式介绍最后的废话 先放结论 ({子表达式1;子表达式2;})是GNU C中的一个拓展&#xff0c;返回值是最后一个表达式的返回值&#xff0c;也就是子表达式2的返回值。 废话 这个表达式是在看Linux源码的时候发现的&#xff08;内核小白随便翻看到的…

将强化学习引入NLP:原理、技术和代码实现

目录 1. 强化学习简介1.1 什么是强化学习&#xff1f;1.2 强化学习的核心组件1.2.1 智能体 (Agent)1.2.2 状态 (State)1.2.3 动作 (Action)1.2.4 奖励 (Reward) 2. 强化学习与NLP的结合2.1 为什么在NLP中使用强化学习&#xff1f;2.2 强化学习在NLP中的应用场景2.2.1 对话系统2…

SAP Oracle表空间扩展技术手册

1、DBACOCKPIT下查看表空间 当表空间不足(达到99%)时,需要按以下步骤扩充表空间(每次扩充20000M,20G): (也可以通过DB13,DB02查看表空间) 新浪博客 Tablespace PSAPSR3 is 100% used | SAP Community Oracle是通过增加数据文件的方式来为表空间扩容。为指定表空间增…

【2023全新保姆级教图文教程】三分钟快速安装好Anacaonda3+Pycharm运行Python

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

抖音seo账号矩阵源码系统

1. 开通多个抖音账号&#xff0c;并将它们归纳为一个账号矩阵系统。 2. 建立一个统一的账号管理平台&#xff0c;以便对这些账号进行集中管理&#xff0c;包括账号信息、内容发布、社区交互等。 3. 招募专业的运营团队&#xff0c;对每个账号进行精细化运营&#xff0c;包括内…

恢复删除文件?不得不掌握的4个方法!

“删除了的文件还可以恢复吗&#xff1f;有个文件我本来以为不重要了&#xff0c;就把它删除了&#xff0c;没想到现在还需要用到&#xff01;这可怎么办&#xff1f;有没有办法找回来呢&#xff1f;” 重要的文件一旦丢失或误删可能都会对我们的工作和学习造成比较大的影响。怎…

【JavaScript保姆级教程】Javascript常量

文章目录 前言一、常量1.1 常量是什么1.2 常量的作用 二、示例代码2.1 示例1&#xff1a;声明一个常量2.2 示例2&#xff1a;常量的命名规则2.3 示例3&#xff1a;常量与变量的区别 总结 前言 欢迎来到【JavaScript保姆级教程】&#xff01;在本篇教程中&#xff0c;我们将讨论…

基于微信小程序的小说图书商城管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉…