Vue的详细教程--基础语法【下】

news2024/9/29 3:29:10

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Vue的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.事件处理器

①.stop

②.prevent

③.once

加了once

没加once

④按键修饰符

⑤表单案例

二.自定义组件

案例

三.组件通信

父传子

子传父


一.事件处理器

①.stop

处理事件冒泡的问题(👇)

这四个div是属于嵌套关系,当我点击包裹在最里面的div时,居然触发了外面的那些div的事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>计算属性&监听属性</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	<style>
		.me{
			background-color: red;
			height: 400px;
			width: 400px;
		}
		.you{
			background-color: yellow;
			height: 300px;
			width: 300px;
		}
		.him{
			background-color: pink;
			height: 200px;
			width: 200px;
		}
		.her{
			background-color: black;
			height: 100px;
			width: 100px;
		}
		
	</style>
	</head>
	<body>
		<!-- 定义边界 -->
			<div id="app">
				<h1>事件处理器</h1>
				<div class="me" @click="me">
					<div class="you"  @click="you">
						<div class="him"  @click="him">
							<div class="her"  @click="her"></div>
						</div>
					</div>
				</div>
				
			</div>
		
		<script type="text/javascript">
			// 构建vue实例 绑定边界	
			new Vue({
				el:'#app',
				data(){
					return{
						
					}
				},
				methods: {
					me(){
						alert("me");
					},you(){
						alert("you");
					},him(){
						alert("him");
					},her(){
						alert("her");
					}
					
				},
			})
		</script>
	</body>
</html>

但是当我们加以处理之后,便可以完美的解决这个问题

②.prevent

用于阻止事件的默认行为

可能这样说会有些笼统,那么举一个例子,当我们点击提交按钮进行提交的时候,就不会在重新加载此界面,而只是进行提交的操作

③.once

加了once

没加once

④按键修饰符

顺便提一嘴,vue允许为v-on在监听键盘事件时添加按键修饰符

全部的按键别名:

  .enter

  .tab

  .delete (捕获 "删除" 和 "退格" 键)

  .esc

  .space

  .up

  .down

  .left

  .right

  .ctrl

  .alt

  .shift

  .meta      

⑤表单案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
		<title>表单</title>
	</head>
	<body>
		<div id="app">
			<h1>注册界面</h1>
			<ul>
				<li>
					<label>姓名:</label><input v-model="uname" /><br />
					<label>密码:</label><input v-model="upwd" type="password" /><br />
					<label>性别:</label>
					<input type="radio" v-model="sex" name="sex" value="1" />男
					<input type="radio" v-model="sex" name="sex" value="0" />女<br />
					<label>爱好:</label>
					<div v-for="h in hobby">
						<input type="checkbox" v-model="hobbies" v-bind:value="h.id" />{{h.name}}
					</div>
					<label>地址:</label>
					<select v-model="myaddress">
						<option value="-1">===请选择===</option>
						<option v-for="a in address" v-bind:value="a.id">{{a.name}}</option>
					</select><br />
					<label>个人描述:</label>
					<textarea v-bind:value="mark"></textarea><br />
					<input type="checkbox" v-model="flag" />确认
					<input type="submit" v-bind:disabled="show" v-on:click="doSubmit" />
				</li>
			</ul>
		</div>
	</body>
	<script type="text/javascript">
		new Vue({
			el: '#app',
			data() {
				return {
					uname: null,
					upwd: null,
					sex: 1,
					hobby: [{
						id: 1,
						name: '篮球'
					}, {
						id: 2,
						name: '足球'
					}, {
						id: 3,
						name: '象棋'
					}],
					hobbies: [],
					address: [{
						id: 1,
						name: '湖南'
					}, {
						id: 2,
						name: '湖北'
					}, {
						id: 3,
						name: '江西'
					}],
					myaddress: null,
					mark: '学生备注',
					flag: false
				}
			},
			computed: {
				show: function() {
					return !this.flag;
				}
			},
			methods: {
				doSubmit: function() {
					console.log('doSubmit')
					var obj = {
						uname: this.uname,
						upwd: this.upwd,
						age:this.age+10,
						sex: this.sex,
						hobbies:this.hobbies,
						myaddress: this.myaddress,
						mark: this.mark,
					}
					console.log(obj);
				}
			}

		})
	</script>
</html>

二.自定义组件

⭐组件简介

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

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

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

⭐全局和局部组件

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

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

⭐props

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

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

❗注意

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

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

data: {

 count: 0

 }

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

 data: function () {

          return {

            count: 0

          }

        }

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

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

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

         🔺首字母大写命名

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

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

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

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

    ⑤:

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

案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
		<div id="app">
			<!-- 定义组件不能使用用驼峰命名 -->
			<!--效果:当引用一个myButton,在页面上一个是一个独特的按钮 -->
			<my-button m="nb"></my-button>
			<my-button m="nnb"></my-button>
			
		</div>
	</body>
	<script type="text/javascript">
		Vue.component('my-button', {
			props:['m'],//定义组件中的变量的
			template:'<button v-on:click="hh">我被{{m}}点击{{n}}次</button>',//代表了自定义组件在页面上显示的内容
			data:function(){
				return {
					n:1
				}
			},
			methods:{
				hh(){
					this.n++;
				}
			}
		});
		new Vue({
			el: '#app',
			data() {
				return {
				};
			}
		})
	</script>
</html>

三.组件通信

   注1:Vue自定义事件是为组件间通信设计   

            vue中父组件通过prop传递数据给子组件,而想要将子组件的数据传递给父组件,则              可以通过自定义事件的绑定

            

父Vue实例->Vue实例,通过prop传递数据

子Vue实例->父Vue实例,通过事件传递数据

   注2:事件名

        不同于组件和prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完          全匹配监听这个事件所用的名称

        建议使用“短横线分隔命名”,例如:three-click

父传子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>组件通信--父传子</title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<div id="app">
					<my-button m="崽崽"></my-button>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el: "#app",
			components: {
				'my-button': {
					props: ['m'],
					template: '<button @click="clickhuihui">爹,{{m}}说了想吃{{n}}个奶酪棒</button>',
					data() {
						return {
							n: 1
						};
					},
					methods: {
						clickhuihui() {
							this.n++;
						}
					}
				}
			}
		});
	</script>
 
</html>

子传父

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>组件通信--子传父</title>
			<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<div id="app">
					<my-button m="夏威" @click="hh"></my-button>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el: "#app",
			components: {
				'my-button': {
					props: ['m'],
					template: '<button @click="cli">{{m}}吃了{{n}}坨💩💩💩 </button>',
					data() {
						return {
							n: 1
						};
					},
					methods: {
						cli() {
							this.n++;
						}
					}
				}
			},
			methods: {
				hh(a, b, c) {
					console.log(a, b, c);
				}
			}
		});
	</script>
 
</html>

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊  

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

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

相关文章

消费盲返模式:一种让消费者和商家都受益的新型消费返利模式

消费盲返是一种新型的消费返利模式&#xff0c;它的核心思想是&#xff1a;消费者在平台购买商品后&#xff0c;可以获得后续一定数量的订单的部分利润作为奖励。这样&#xff0c;消费者不仅可以享受商品的优惠&#xff0c;还有可能赚取更多的钱。 这种模式对于平台和消费者都有…

WorkPlus | 好用、专业、安全的局域网即时通讯及协同办公平台

自国家于2022年发布的《关于加强数字政府建设的指导意见》以来&#xff0c;我国数字政府建设已经迈入了一个全新的里程碑&#xff0c;迎来了全面改革和深化升级的全新阶段。 WorkPlus作为自主可控、可信安全、专属定制的数字化平台&#xff0c;扮演着政务机关、政府单位以及各…

mysql 导入sql文件

mysql 导入sql文件 sudo mysql -uroot -p123456 -h127.0.0.1 sudo mysql -uroot -p123456 -h127.0.0.1然后 show databases;然后 use 数据库名称; 然后 source 20230920031001.sql;如果不加 -h127.0.0.1 可能会出现错误 /var/lib/mysql.sock error 通过 navicat导入的话&am…

英语——分享篇——每日100词——201-300

chess——che车(拼音)ss两个美女(编码)——车里有两个美女在下国际象棋 April——ap阿婆(拼音)ri日(拼音)l棍子(编码)——四月份阿婆每日拿着棍子 palace——place地方——这个地方是宫殿 bottle——bo60(象形)ttle太太乐(拼音)——有60颗太太乐鸡精在瓶子里

VVICAPI接口解析,实现根据ID取商品详情

VVICAPI是一个虚构的API接口名称&#xff0c;我无法提供具体的VVICAPI接口解析。但是&#xff0c;我可以向您展示一般的API接口使用方法&#xff0c;以及如何根据ID获取商品详情的示例代码。 假设您有一个名为"VVICAPI"的接口&#xff0c;并且您已经获得了访问该接口…

epoll的并发服务器(TCP服务器与客户端通信)

服务器&#xff1a; #include<myhead.h> #define IP "192.168.250.100" #define PORT 8888 /* typedef union epoll_data {void *ptr;int fd;uint32_t u32;uint64_t u64; } epoll_data_t;struct epoll_event {uint32_t events; …

使用vmware安装虚拟机时“出现此主机支持Intel VT-x,但Intel VT-x处于禁用状态”。

1、出现问题 使用vmware安装虚拟机时“出现此主机支持Intel VT-x&#xff0c;但Intel VT-x处于禁用状态”。 已将该虚拟机配置为使用 64 位客户机操作系统。但是&#xff0c;无法执行 64 位操作。 此主机支持 Intel VT-x&#xff0c;但 Intel VT-x 处于禁用状态。 如果已在 BI…

JPA的注解@Field指定为Keyword失败,导致查询不到数据

一、背景 使用 jpa 对es操作&#xff0c;查询条件不生效&#xff0c;需求是批量查询课程编号。说白了&#xff0c;就是一个In集合的查询。在es里&#xff0c;如果是精准匹配是termQuery&#xff0c;比如&#xff1a; queryBuilder.filter(QueryBuilders.termQuery(“schoolId…

【Vue】路由与Node.js下载安装及环境配置教程

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Vue快速入门》。&#x1f3af;&#x1f3af; &…

Python之列表

标题 列表什么是列表列表的创建列表的删除列表的访问 列表的常用方法append()、insert()、extend()pop()、remove()、clear()count()、index() 列表支持的运算加法运算符乘法运算符*成员测试运算符in 内置函数对列表的操作列表推导式 切片操作&#xff08;1&#xff09;使用切片…

手机直播录屏软件哪家好?看这篇就够了!

随着智能手机的普及&#xff0c;移动互联网的飞速发展&#xff0c;手机直播和录屏已成为人们在日常生活中不可或缺的一部分。手机直播和录屏软件的广泛应用&#xff0c;满足了人们日常工作、学习、娱乐等各方面的需求。本文将介绍两款手机直播录屏软件&#xff0c;并通过分步骤…

最小二乘法预测波士顿房价

首先导入所需要的库 import sklearn import matplotlib.pyplot as plt from matplotlib import font_manager from matplotlib import rcParams from sklearn.datasets import load_boston from sklearn import linear_model from sklearn.model_selection import train_test_…

el-input-number 添加单位

效果&#xff1a; 数字长的时候也不会遮挡后面单位 1、使用css&#xff0c;代码 <el-form-itemlabel"功率 "><el-row><el-col :span"4"><el-switchv-model"formData.powerEnable":active-value"1":inactive-v…

反转单链表

思路图1&#xff1a; 代码&#xff1a; struct ListNode* reverseList(struct ListNode* head){if(headNULL)//当head是空链表时 {return head; }struct ListNode* n1NULL;struct ListNode* n2head;struct ListNode* n3head->next;if(head->nextNULL)//当链表只有一个节…

【解刊】IEEE旗下Trans系列,中科院1区TOP,国人占比79.388%排名第一!(附IEEE名单)

计算机领域 • 好刊解读 IEEE Transactions on Cybernetics 出版社&#xff1a;IEEE ISSN&#xff1a;2168-2267 eISSN&#xff1a;2168-2275 检索数据库&#xff1a;SCIE&EI 双检 数据库检索年份&#xff1a;2013年 出刊频率&#xff1a;月刊&#xff0c;一年一卷&…

python之读写.docx文件实例

.docx文件是一种由Microsoft Word处理的二进制文件格式&#xff0c;取代了早期版本的.doc格式。它包含文本、图像、表格和其他文档元素&#xff0c;并用于Microsoft Office Word 2007及更高版本。 .docx文件通常使用Office Open XML标准&#xff08;ISO/IEC 29500&#xff09;…

Python爬虫从端到端抓取网页

网页抓取和 REST API 简介 网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档&#xff0c;但某些平台还提供 REST API 来以机器可读格式&#xff08;如 JSON&#xff09;检…

平面设计找素材就上这6个网站

平面设计师找素材就上这6个网站&#xff0c;免费下载&#xff0c;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库&#xff0c;站内包含设计、办公、自媒体、图片、电商等各行业素材。网站还为新手设计师提供免费的素材…

使用sersync实现数据实时同步

使用sersync实现数据实时同步 sersync诞生过程部署前提配置rsync部署sersync配置sersync的path变量 修改sersync配置文件sersync常用参数使用服务文件实现开机自启动实时同步服务debug sersync诞生过程 sersync作者&#xff1a;前金山公司周洋(花椒直播&#xff09; 数据实时同…

(leetcode)二叉树最大深度

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 题目&#xff1a; 思路&#xff1a; 代码&#xff1a; 图解&#xff1a; 题目&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数…