vue模板语法(下集)

2023-09-20 10:17:49

事件处理器

Vue模板语法中的事件处理器是指在Vue组件中绑定DOM事件,当事件发生时执行相应的方法或表达式。常见的事件包括点击事件@click、输入事件@input、鼠标移入事件@mouseover等等。

事件监听可以使用v-on 指令

  2.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>

  全部的按键别名:
   
  .enter
      .tab
      .delete (捕获 "删除" 和 "退格" 键)
      .esc
      .space
      .up
      .down
      .left
      .right
      .ctrl
      .alt
      .shift
      .meta      

 注1:什么是事件冒泡?
           见“事件冒泡模型.png” 

  ## demo3.1.html
  2.2 按键修饰符
      Vue允许为v-on在监听键盘事件时添加按键修饰符:

      <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
      <input v-on:keyup.13="submit">

      Vue为最常用的按键提供了别名
      <!-- 同上 -->
      <input v-on:keyup.enter="submit">

   

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
			<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>事件处理器</title>
		<style type="text/css">
			.one{
				background-color: red;
				height: 400px;
				width: 400px;
			}
			.two{
				background-color: blue;
				height: 300px;
				width: 300px;
			}
			.three{
				background-color: pink;
				height: 200px;
				width: 200px;
			}
			.four{
				background-color: yellow;
				height: 100px;
				width: 100px;
			}
		</style>
	
	</head>
	<body>
		<div id="app">
			<dvi class="one"@click.stop="fun1">
				<div class="two"@click.stop="fun2">
				  <div class="three"@click.stop="fun3">
					  <div class="four"@click.stop="fun4"></div>
					  </div>
				</div>	  
			</dvi>
				<p>提交答案</p>
						<button @click.once="dosub">提交</button>
						<p>按键修饰符</p>
						<input v-on:keyup.enter="dosub" />
		</div>	
				
		<script type="text/javascript">
		new Vue({
			el:"#app",
			data(){
				return{
					msg:'hello  小B 你相信光吗?',
					};
			},
			methods:{
				fun1(){
					alert("fun1")
				},
				fun2(){
					alert("fun2")
				},
				fun3(){
					alert("fun3")
				},
				fun4(){
					alert("fun4")
				},
					dosub(){
									alert("已做完,提交答案");
								}
			}
		});
		
		</script>
	
	</body>
</html>

Vue表单

Vue表单是一种用于收集用户输入信息的Web表单,它基于Vue框架的数据双向绑定特性,可以使开发者更加简单和方便地管理表单数据。Vue表单提供了一系列的组件,比如文本输入框、下拉列表、单选框、复选框等,开发者可以根据需要在界面上选择合适的组件,同时使用Vue的模板语法进行组件的渲染和绑定。

Vue表单中的组件通常由两部分组成,一部分是表单对象,用来表示表单的数据结构和验证规则,另一部分是表单控件,用来实现界面上的输入和操作行为。在Vue中,表单对象可以通过data选项或computed属性来定义,同时通过v-model指令与表单控件进行双向数据绑定,实现数据的自动更新。除此之外,Vue表单还提供了一些常用的验证规则和自定义验证函数,开发者可以根据需要进行使用和扩展。

<!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>
					<p>vue表单</p>
					<label>姓名:</label><input v-model="uname" /><br />
					<label>密码:</label><input v-model="upwd" type="password" /><br />
					<!-- 将用户的输入值转为 Number 类型 -->
					<label>年龄:</label><input v-model.number="age" /><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="type">
						<option value="-1">===请选择===</option>
						<option v-for="t in types" v-bind:value="t.id">{{t.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,
					age: 10,
					sex: 1,
					hobby: [{
						id: 1,
						name: '洗脚'
					}, {
						id: 2,
						name: '看飞机'
					}, {
						id: 3,
						name: '上网'
					}],
					hobbies: [],
					types: [{
						id: 1,
						name: '男'
					}, {
						id: 2,
						name: '其他'
					}, {
						id: 3,
						name: '女'
					}],
					type: 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,
						type: this.type,
						mark: this.mark,
					}
					console.log(obj);
				}
			}

		})
	</script>
</html>

总的来说,Vue表单的优点是它具有简单易用、数据双向绑定、验证规则灵活和可扩展性强等特点,适合于快速开发和维护大量的响应式表单

组件通信

Vue的组件通信是指不同组件之间进行数据和事件的传递的过程。在Vue中,

组件通信主要包括以下几种方式:

父子组件通信:

父组件可以通过props向子组件传递数据,子组件可以通过$emit事件向父组件发送数据。

兄弟组件通信:

兄弟组件通信需要通过共同的父组件来传递数据,可以通过props和$emit事件来实现。

跨级组件通信:

跨级组件通信也需要通过共同的父组件来传递数据,可以通过provide和inject实现,在父组件中提供数据,在后代组件中使用inject获取数据。

使用全局事件总线:

使用Vue实例作为事件总线,通过$on、$emit、$off等方法来实现组件之间的数据传递。

使用Vuex来进行状态管理:

Vuex是Vue官方推荐的状态管理库,可以将共享的状态抽离出来,放到单独的store中,供所有组件使用,可以通过调用store中的方法来实现数据的传递和状态管理。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</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="app">
			<!-- 定义组件不能用驼峰命名 -->
			<!-- 需求是:当引用一个myButton,也页面上一个独特标记按钮 -->
			<my-button m="刘文"></my-button>
			<my-button m="刘鑫"></my-button>
			
			<!-- <button onclick=""></button> -->
		</div>
	</body>
	<script type="text/javascript">
		Vue.component('my-button', {
			// props是定义组件中的变量的
			props:['m'],
			// template代表了自定义组件在页面上显示的类容
			template:'<button v-on:click="incrn">我被{{m}}点击{{n}}次</button>',
			data:function(){
				return {
					n:1
				}
			},
			methods:{
				incrn(){
					this.n++;
				}
			}
		});
		// 绑定边界	ES6具体体现
		new Vue({
			el: '#app',
			data() {
				return {
				};
			}
		})
	</script>
</html>

 

总的来说,Vue的组件通信提供了多种方式,根据不同的场景和需求可以选择合适的方式来实现组件之间的数据和事件的传递。

更多推荐

网页的快捷方式打开自动全屏--Chrome、Firefox 浏览器相关设置

Firefox的全屏方式与Chrome不同,Chrome自带全屏模式以及APP模式,通过简单的参数即可设置,而Firefox暂时么有这个功能,Firefox的全屏功能可以通过全屏插件实现。全屏模式下,按F11不会退出全屏,鼠标移动到屏幕上方也不会提示退出全屏如果当前运行着其它的Chrome窗口,那么全屏化打开是无效的,

高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

幂等概念来自于数学,在计算机科学中,幂等表示一次后、或多次请求某一资源,应该有同样的影响效果。在业务表现上一般是同样的数据效果,下面就常用的业务场景,来聊聊幂等的技术方案。-----------------数据层-----------------索引与事务根据业务需要,给表添加唯一索性或组合索引,防止产生脏数据。根据数

网络安全第一次作业

1、什么是防火墙防火墙是一种网络安全系统,它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问,同时允许合法通信通过。防火墙可以在硬件、软件或两者的组合中实现,并且可以配置为根据各种条件(如IP地址、端口号和协议类型)过滤流量。防火墙还可以提供其他安全功能,例如入侵检测

自然语言处理技术之词向量:GloVe单词表示的全局向量(glove.840B.300d、glove.6B)

目录一、词向量介绍二、GloVe学习词向量的词嵌入模型三、词向量入门(代码下载)四、训练五、模型概述六、可视化七、发布历史一、词向量介绍自然语言处理(NLP)中的词向量是将文本中的词汇表示为数值向量的技术。词向量的主要作用是将文本数据转换成计算机可以理解和处理的形式,以便进行各种NLP任务。以下是词向量在NLP中的主要

nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(三)

因为这个版本的若依plus不支持本地文件上传,所以需要增加这些本地上传文件的后端代码和前端代码修改。1、后端部分先配置跳过测试吧,平时编译也不需要这个<!--添加配置跳过测试--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-s

配置Vite获取内网IP(Vue3项目​ts版本获取本机局域网IP地址)

参考文章:vue项目获取本机局域网IP地址(vue.config.js版本)在Vite中,没有vue.config.js文件,而是使用vite.config.js(或vite.config.ts,如果项目使用TypeScript)来配置项目;1.获取IP需要借助os模块,需要先安装依赖:npminstallos2.其次

睿趣科技:抖音开网店新手卖什么好

随着社交媒体和电子商务的迅猛发展,越来越多的人开始探索在抖音上开网店,希望能够通过这一平台实现创业梦想。但对于新手来说,选择什么产品进行销售可能会是一个困扰。在本文中,我们将探讨一些适合抖音新手的热门产品和一些成功经验,以帮助你在抖音上开设一家成功的网店。潮流服饰:服装和配饰一直是电子商务的热门领域之一。通过在抖音上展

轻量型服务器能支撑多少人访问?

一、服务器配置影响访问人数服务器的配置是影响轻量型服务器能够支撑的访问人数的关键因素之一。通常而言,轻量型服务器的配置普遍不高,适合小型团队或个人使用。如果服务器配置较低,那么支撑访问人数的能力也会受到限制。较为简单的应用程序对服务器性能要求不高,可以支持较多的访问人数。但是,如果应用程序较为复杂,对服务器性能要求较高

9月16日,每日信息差

今天是2023年09月16日,以下是为您准备的15条信息差第一、天猫超市首单“茅小凌”已由菜鸟送达,首单已由菜鸟供应链完成履约,18分钟送达消费者手中第二、软银考虑对OpenAI进行投资。此外,软银还初步拟收购英国人工智能芯片制造商Graphcore第三、我国共有327家网约车平台公司取得经营许可。各地共发放网约车驾驶

行业追踪,2023-09-20

自动复盘2023-09-20凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行业加一个上级的归类,这样更能体现

C# Math.Round()四舍五入、四舍六入五成双

开发者为了实现小数点后2位的四舍五入,编写了如下代码,varnum=Math.Round(12.125,2);代码非常的简单,开发者实际得到的结果是12.12,这与其所预期的四舍五入结果12.13相悖。其实产生这个结果的原因是由于Math.Round默认使用的并非是四舍五入的原则,而是四舍六入五成双的原则。四舍六入五成

热文推荐