Vue.js模板语法[下](事件处理,表单综合案例,自定义组件)---详细讲解

2023-09-20 11:54:07

一,事件处理

1. `.stop`:阻止事件冒泡。使用该修饰符可以阻止事件向父元素传播

2. `.prevent`:阻止默认事件。使用该修饰符可以阻止事件的默认行为。

3. `.capture`:使用事件捕获模式。默认情况下,事件是在冒泡阶段处理的,使用该修饰符可以改为在捕获阶段处理。

4. `.self`:只在事件触发的元素自身上触发事件处理器。如果事件是由子元素触发的,使用`.self`修饰符可以阻止事件处理器执行。

5. `.once`:只触发一次事件处理器。使用该修饰符可以确保事件处理器只执行一次。

6. `.passive`:提升滚动性能。如果事件处理器中没有调用preventDefault()阻止默认事件,可以使用`.passive`修饰符来告诉浏览器该事件处理器不会阻止默认事件,从而提升滚动的性能。
 

事件修饰符

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

 ① .stop

当我们嵌套多个div并设置点击事件的时候,会弹出多个提示语句,使用.stop即可

没有使用.stop的案例:

<!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>
		.one{
			background-color: aqua;
			height: 400px;
			width: 400px;
		}
		.two{
			background-color: red;
			height: 300px;
			width: 300px;
		}
		.three{
			background-color:yellow;
			height: 200px;
			width: 200px;
		}
		.four{
			background-color: darkgray;
			height: 100px;
			width: 100px;
		}
		</style>
	</head>
	
	
	<body>
		<div id="B">
		<div class="one" @click="click1" >
			<div class="two" @click="click2">
				<div class="three" @click="click3">
					<div class="four" @click="click4"></div>
				</div>
			</div>
		</div>
		</div>
		<script>
			new Vue({
				el:'#B',
				data(){
                  return{
					  msg:'Hello Bing! ! !'
				  };    
				},
				methods:{
					click1(){
						alert("click1");
					},
					click2(){
				 		alert("click2");
					},
					click3(){
						alert("click3");
					},
					click4(){
						alert("click4");
					}
				}
			});
		</script>
	</body>
</html>

会发现,越在里面嵌套的div,越会弹出多个提示语句,再使用.stop即可

如:

<div class="one" @click.stop="click1" >
			<div class="two" @click.stop="click2">
				<div class="three" @click.stop="click3">
					<div class="four" @click.stop="click4"></div>
				</div>
			</div>

加上之后,再试试!

.once

在我们日常生活中,在点击提交按钮上传相关的资料或app点击查询的时候。有些时候觉得是卡了,然后就一直点击相关的按钮,其实一直点的时候会将你想提交的资料数据等等,重复将数据提交到后台。

如:

.once就是将重复的数据只能提交一遍,然后在事件上点击.once,再试试

<button @click.once="clickME">点我</button>

二,表单综合案例

表达综合案例作用:

     在Vue中,整合所有语法是指将Vue的各种语法特性结合起来使用,以实现更复杂、更灵活的功能。通过整合各种语法特性,可以更好地利用Vue的强大功能,提高开发效率和代码质量

案例代码:

<!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>
		
		</style>
	</head>
	
	
	<body>
		<div id="B">
			姓名:<input name="name" v-model="name"/><br />
		 	密码:<input name="pwd" v-model="pwd"/><br />
		    性别<span v-for="s in sexlist">
			    <input type="radio" name="sex" id="" v-model="sex" :value="s.id">{{s.name}}
		        </span><br /> 
	     	籍贯:<select name="Myaddress" v-model="Myaddress">
				<option v-for="a in address" :value="a.id">{{a.name}}</option>
		     	</select><br />
		    爱好:<span v-for="h in hobby">
				 <input type="checkbox" name="Myhobby"  v-model="Myhobby" :value="h.id"/>{{h.name}}
			    </span><br />
		    个人简介:<textarea v-model="sign" cols="12" rows="8"></textarea><br />
			
			同意:<input type="checkbox" v-model="ok"/><br />
			  <button v-show="ok" @click="tijiao">提交</button>
			
			
			</div>
		<script>
			new Vue({
				el:'#B',
				data(){
                  return{
					 name:'ZB',
					 pwd:'666666',
					 sexlist:[{
						 name:'男',id:1,
						 },{
						  name:'女',id:2,
						 },{
						  	  name:'未知',id:0,
						  }],
					 sex:1,
					 hobby:[{
						 name:'敲代码',id:1
					 },{
						 name:'还是敲代码',id:2
					 },{
						 name:'动画片',id:3
					 },{
						 name:'还是看动画片',id:4
					 }],
					 Myhobby:[], 
					 address:[{
						 name:'缅北',id:1
					 },{
						 name:'泰国',id:2
					 },{
						 name:'m78',id:3
					 },{ 
						 name:'重庆 ',id:4
					 }],
					 Myaddress:null,
					 sign:null,
					 ok:false
				  };    
				},
			   
			   methods:{
				   tijiao(){
                var obj={};
				obj.name=this.name;
				obj.pwd=this.pwd;
				obj.sex=this.sex;
				obj.address=this.Myaddress;
				obj.love=this.Myhobby;
				obj.sign=this.sign;
				console.log(obj);
			   }
			   }
			
			});
		</script>
	</body>
</html>

三,自定义组件

       在前端开发中,自定义组件通常由 HTML、CSS 和 JavaScript 代码组成,用于实现特定的用户界面元素和行为。例如,一个自定义的按钮组件可能具有特定的样式、点击效果和交互行为。通过创建自定义组件,开发者可以减少重复的代码编写,提高代码的可复用性和维护性。

总之,自定义组件是开发者按照自己的需求和特定场景创建的、具有特定功能的组件,用于增强软件的功能和可定制性

常见的组件:

父子组件通信:父组件可以通过属性绑定向子组件传递数据,子组件可以通过事件来向父组件发送消息。父组件通过属性绑定将数据传递给子组件,子组件可以通过props属性接收并使用这些数据。子组件可以通过$emit方法触发事件,并传递参数给父组件。这种通信方式符合单向数据流的原则,父组件通过属性传递数据给子组件,而子组件通过事件将消息传递给父组件。
创建一个自定义组件button

<!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="B">
       <h3>自定义组件的使用</h3>
       <my-button>xx</my-button>
		</div>
		<script>
			new Vue({
				el:'#B',
				components:{
					'my-button':{
						template:'<button>按钮</button>'
					}
				},
				data(){
                  return{
					  msg:'Hello Bing! ! !'
				  };    
				},
				methods:{
				
				}
			});
		</script>
	</body>
</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="B">
       <h3>自定义组件的使用</h3>
       <my-button></my-button>
	      <h3>组件通信---父传子</h3>
	   <my-button btn="bulbu"></my-button>
	   <h3>组件通信---父传子2</h3>
	   <my-button btn="我没k"></my-button>
		</div>
		<script>
			new Vue({
				el:'#B',
				components:{
					'my-button':{
						props:['btn'],
						template:'<button @click="clickME">我被{{btn}}点击了{{n}}次</button>',
					 data:function(){
						 return{
							 n:1
						 }
					 },
					 methods:{
						 clickME(){
							 this.n++;
						 }
					 }
					 
					}
				},
				data(){
                  return{
					  msg:'Hello Bing! ! !'
				  };    
				},
				methods:{
				
				}
			});
		</script>
	</body>
</html>

组件子传父

组件通信中子传父是Vue中常用的组件通信方式之一,它可以实现子组件向父组件传递数据、实现组件的解耦和复用、实现数据的传递和共享等功能。通过合理使用子传父,可以更好地组织和管理Vue项目的代码,提高开发效率和代码质量

<!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="B">
       <h3>自定义组件的使用</h3>
	      <h3>组件通信---子传父</h3>
	   <my-button btn="我没k" @xxx='getParam'></my-button>
		</div>
		<script>
			new Vue({
				el:'#B',
				components:{
					'my-button':{
						props:['btn'],
						template:'<button @click="clickME">我被{{btn}}点击了</button>',
					 methods:{
						 clickME(){
							 let name ="帅哥";
							 let bname ="我没k的故事";
							 let price ="借的";
							 this.$emit('xxx',name,bname,price)
						 }
					 }
					 
					}
				},
				data(){
                  return{
					  msg:'Hello Bing! ! !'
				  };    
				},
				methods:{
				  getParam(a,b,c ){
					  console.log(a,b,c)
				  }
				}
			});
		</script>
	</body>
</html>

更多推荐

基于当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(MillenniumEcosystemAssessment,MA)以来,生态系统服务成为学术界的研究热点,其中在生态系统服务功能

netty之ObjectPool(对象池)

对象池和我们的连接池一样就是对象放入一个池中循环使用。特别是在netty创建ByteBuf的时候buf循环使用大大减小了频繁创建对象,垃圾收集的压力。特别是在使用直接内存的时候。netty的对象池对象RecyclerObjectPoolextendsObjectPool。RecyclerObjectPool只是外层抽象

exev函数族

一.exev函数族1.1功能exec()函数族的主要功能是在当前进程中运行一个新的程序。使用这些函数可以实现以下功能:程序替换(ProgramReplacement):调用exec()函数后,当前进程的代码和数据会被新程序的代码和数据替换。这可以用于动态加载和替换程序,使得一个进程可以切换到运行不同的程序,实现灵活的程

Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单

鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。二、企业通过

5G面试题目和答案,计算机面试

以下是一些5G面试的题目和答案,供您参考:5G是什么?与4G相比有哪些主要区别和优势?5G是指第五代移动通信技术,它是在4G的基础上进一步发展而来的。相比4G,5G具有更高的数据传输速度、更低的延迟、更高的网络容量和更好的连接稳定性。它的优势包括:支持更多的设备、更快的传输速度、更低的延迟、更高的网络容量、更好的连接稳

[尚硅谷React笔记]——第1章 React简介

目录:第1章React简介React的基本使用:虚拟DOM的两种创建方式:使用jsx创建虚拟DOM使用js创建虚拟DOM(一般不用)虚拟DOM与真实DOM:ReactJSX:JSX练习:模块与组件、模块化与组件化的理解模块组件模块化组件化第1章React简介中文官网:https://react.docschina.or

MySQL 约束与复杂查询

当涉及到数据库管理系统(DBMS)的高级主题时,包括数据库的约束、表的设计以及各种类型的查询,特别是聚合查询、联合查询和合并查询,是非常重要的。这些主题可以帮助我们更好地理解数据库的内部工作机制以及如何有效地操作数据。在这篇博客中,我们将深入探讨这些主题~~目录数据库的约束表的设计1.一对一关系(One-to-OneR

了解消息中间件的基础知识

为什么要使用消息中间件?解耦:消息中间件可以使不同的应用程序通过解耦的方式进行通信,减少系统间的依赖关系提供异步通信:消息中间件可以实现异步消息传递,提高系统的响应性能。流量削峰:消息中间件可以起到流量削峰的作用,将短时间内的爆发式流量存储在消息队列中,使系统能够平稳地处理请求解决分布式系统数据传输的需求:如分布式场景

C++57个入门知识点_番外4_静态链接与动态链接中LIB和DLL的区别与使用

在Qt5.9C++开发指南_创建和使用静态链接库和Qt5.9C++开发指南_创建和使用共享库中我们介绍了Qt中创建使用静态链接和动态链接库的方法,本篇是对具体的库文件和使用方法做一个通用的介绍,相互之间互为参考。文章目录1.两种LIB文件介绍2.关于lib和dll的区别3.库文件的链接使用方法3.1两种链接方式3.2静

JavaWeb基础学习(5)

JavaWeb基础学习一、Filter1.1Filter介绍1.2Filter快速入门1.3、Filter执行流程1.4、Filter使用细节1.5、Filter-案例-登陆验证二、Listener2.1Listener介绍2.2、ServletContextListener使用三、AJAX3.1AJAX介绍与概念3.

Java编程实践:使用面向对象编程(OOP)概念构建简单的国际象棋游戏

介绍国际象棋是一个两人玩的策略游戏。使用Java和面向对象编程(OOP)概念来模拟这个游戏可以帮助我们更好地理解OOP的核心原理。本教程将带领您一步步地使用Java构建一个简单的国际象棋游戏。OOP概念概述面向对象编程(OOP)是一种计算机编程范式,其中程序被组织成对象。主要的OOP概念包括:类(Class):定义对象

热文推荐