Vue模板语法(下)

news2024/10/1 13:32:44

事件处理器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<style>
			.pink{
				width: 400px;
				height: 400px;
				background-color: pink;
			}
			.orange{
				width: 300px;
				height: 300px;
				background-color: orange;
			}
			.blue{
				width: 200px;
				height: 200px;
				background-color:rebeccapurple;
			}
			.green{
				width: 100px;
				height: 100px;
				background-color: green;
			}
		</style>
	</head>
	<body>
		<!-- 定义边界 -->
		<div id="app">
			<p>冒泡事件</p>
			<div class="pink" @click="pink">
				<div class="orange" @click="orange">
					<div class="blue" @click="blue">
						<div class="green" @click.stop="green"></div>
					</div>
				</div>
			</div>
			<p>点击夸你</p>
			<button @click.once="dosub">提交</button>
	</body>
	<script type="text/javascript">
		// 绑定边界	ES6具体体现
		new Vue({
			el: '#app',
			data() {
				return {
					f200: 'f200'
				};
			},
			methods: {
				pink() {
					alert("pink");
				},
				orange() {
					alert("orange");
				},
				blue() {
					alert("blue");
				},
				green() {
					alert("green");
				},
				dosub(){
					alert("兄弟,点的好");
				}
			}
		})
	</script>
</html>

冒泡事件

 

 阻止事件冒泡

 

 事件只能单击一次

什么是事件冒泡?

冒泡事件是指在Web开发中的事件传播过程中,事件从DOM树的最底层元素(通常是最具体的元素)向上冒泡到DOM树的根节点的过程。这种事件传播模型允许开发者在更高层次的元素上监听和处理事件,而不需要在每个具体的元素上都添加事件处理程序。

冒泡事件的传播过程可以简要描述如下:

  1. 事件首先从触发它的元素开始,然后向上冒泡到DOM树的根节点。
  2. 在这个过程中,每个祖先元素都有机会捕获并处理事件,如果它们注册了相应的事件处理程序。
  3. 如果事件处理程序返回true,事件将继续冒泡,直到到达根节点。
  4. 如果事件处理程序返回false或没有返回值,事件将停止冒泡,不会继续向上传播。

冒泡事件允许开发者在父元素上注册事件处理程序,以便捕获子元素触发的事件,从而提高了事件处理的效率和可维护性。

 

 表单的综合案例

<!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">
    姓名:<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 />
	
    籍贯:<select name="myAddr" v-model="myAddr">
      <option v-for="a in address" :value="a.id">{{a.name}}</option>
    </select><br />
	
    爱好:<span v-for="h in hobby">
      <input type="checkbox" v-model="myLike" name="myLike" :value="h.id"/>{{h.name}}
    </span><br />
	
	
    简介:<textarea v-model="sign" cols="20" rows="2"></textarea><br />
    是否同意:<input type="checkbox" v-model="ok"/><br />
    <button v-show="ok" @click="dosub">提交</button>
  </div>
  <script type="text/javascript">
    new Vue({
      el:'#app',
      data(){
        return {
          name:'',
          pwd:'',
          sexList:[
            { name:'男', id:1 },
            { name:'女', id:2 },
            { name:'不详', id:3 }
          ],
          hobby:[
            { name:'唱', id:1 },
            { name:'跳', id:2 },
            { name:'Rap', id:3 },
            { name:'篮球', id:4 }
          ],
          myLike:[],
          address:[
            { name:'湖南', id:1 },
            { name:'湖北', id:2 },
            { name:'河南', id:3 },
            { name:'河北', id:4 }
          ],
          myAddr:null,
          sign:null,
          ok:false,
          sex:null 
        };
      },
      methods:{
        dosub(){
          var obj = {};
          obj.name = this.name;
          obj.pwd = this.pwd;
          obj.sex = this.sex; 
          obj.address = this.myAddr;
          obj.love = this.myLike;
          obj.sign = this.sign;
          console.log(obj);
        }
      }
    });
  </script>
</body>
</html>

 效果图:

 组件通信

自定义事件

   监听事件:$on(eventName)

   触发事件:$emit(eventName)

   注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">
			<p>自定义组件</p>
			<my-<button type="button">liao</button>
			</div>
			
		<script type="text/javascript">
			new Vue({
				el:'#app',
				components:{
					'mybutton':{
						template:'<button>xx</button>'
					}
				},
				data(){
					return {
						msg:'123'
					};
				},
				methods:{
					fun1(){
						alert("fun1");
					}
				}
			});
		</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="app">
			<p>自定义组件</p>
			<button type="button">liao</button><br />
			
			
			<p>组件通信——父传子</p>
			<my-button m="纸"></my-button>
			
			
			<p>组件通信——父传子(纸)</p>
			<my-button m="翔" n="10"></my-button>
		</div>
			
		<script type="text/javascript">
			new Vue({
				el:'#app',
				components:{
					'my-button':{
						props:['m','n'],
						template:'<button @click="clickMe">被{{m}}点击了{{n}}次</button>',
						data:function(){
							return {
								n:1
							}
						},
						methods:{
							clickMe(){
								this.n++;
							}
						}
					}
				},
			});
		</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="app">
			<p>组件通信——子传父</p>
			<my-button m="料" n="10" @xxx='getParam'></my-button>
		</div>
			
		<script type="text/javascript">
			new Vue({
				el:'#app',
				components:{
					'my-button':{
						props:['m','n'],
						template:'<button @click="clickMe">被{{m}}点击了{{n}}次</button>',
						data:function(){
							return {
								count:1
							}
						},
						methods:{
							clickMe(){
								let name = '来了';
								let bname = '开始来了';
								let info = '我tm来了';
								this.$emit('xxx', name, bname, info);
							}
						}
					}
				},
				data(){
					return {
						msg:'1234'
					};
				},
				methods: {
					getParam(a, b, c){
						console.log(a, b, c);
					}
				}
			});
		</script>
	</body>
</html>

 

 效果图:

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

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

相关文章

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01 前言 在计算机安全领域&#xff0c;漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天&#xff0c;我们将深入探讨一个异常危险的漏洞&#xff0c;它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中&#xff0c;"exit&qu…

【Vue.js】快速入门与工作生命周期的使用

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》 《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 目录 ​编辑 1.Vue是什么 2.Vue的特点及优势 3. 使用Vue的详细步骤 3.1.导入 3.2…

资源超分是什么?

经常听到资源超分&#xff0c;但是具体指的什么还不清楚&#xff0c;哪里来的术语 https://www.modb.pro/db/199368 3&#xff0e;超线程技术管理及如何开启 超线程是intel研发的技术&#xff0c;利用特殊的硬件指令&#xff0c;把一个物理CPU核模拟成两个逻辑内核&#xff…

点成案例丨温度梯度培养箱在探究温度对植物发芽影响中的应用

变暖的气候与受影响的种子 全球变暖是指由于人类工业化和燃烧化石燃料等活动释放了大量温室气体&#xff0c;这些气体进入大气层导致地球气温在过去几十年里逐渐升高的现象。全球气候变暖带来了一系列严重的环境问题&#xff1a;温度升高导致冰川和极地冰层融化&#xff0c;海…

中秋节要来了,程序猿的你还要加班吗

其他人的中秋节是这样的&#xff1a; 明月松间照&#xff0c;清泉石上流。 程序猿的中秋节是这样的&#xff1a; 明月几时有&#xff1f;把酒问青天。 首先&#xff0c;跟大家开个玩笑。希望中秋节的你&#xff0c;不要加班&#xff0c;毕竟身体是革命的本钱嘛。 中秋&…

初识 python 装饰器

1.什么是装饰器&#xff1f; 装饰器&#xff08;Decorator&#xff09;是Python中一种用于修改函数或类的行为的设计模式。装饰器允许您在不修改原始函数或类的情况下&#xff0c;给它们添加新的功能&#xff0c;这使得代码更具可重用性和可扩展性。简而言之&#xff0c;就是一…

17.适配器模式(Adapter)

意图&#xff1a;将一个类的接口转换为Client希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类在一起工作。 UML图 Target&#xff1a;定义Client使用的与特定领域相关的接口。 Client&#xff1a;与符合Target接口的对象协同工作。 Adaptee&#xf…

华为OD机试 - 求最多可以派出多少支团队 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Linux提权辅助工具Linux Exploit Suggester

Linux提权辅助工具Linux Exploit Suggester 1.概述2.工具使用3.已经有人二开了 1.概述 Linux Exploit Suggester是一款根据操作系统版本号自动查找相应提权脚本的工具 Linux Exploit Suggester的官方下载地址为https://github.com/PenturaLabs/Linux_Exploit_Suggester 2.工具…

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现 文章目录 1\. 伙伴系统的核心数据结构2\. 到底什么是伙伴3\. 伙伴系统的内存分配原理4\. 伙伴系统的内存回收原理5\. 进入伙伴系统的前奏5.1 获取内存区域 zone 里指定的内存水位线5.2 检查 zone 中剩余内存容量…

基于Java的公务员考试资料共享平台的设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

JavaScript中常用的输入输出语句介绍

在日常开发中&#xff0c;为了方便数据的输入和输出&#xff0c;JavaScript提供了一些常用的输入输出语句&#xff0c;具体如表1-3所示。 表1常用的输入输出语句 接下来将分别演示document.write0、console.log0和promptO的使用。 1. document.write() document.write0的输出…

mysql大数据量 分页查询优化

最近我老表问我一个面试问题&#xff0c;如果数据量很大&#xff0c;分页查询怎么优化。 个人觉得无非就是sql优化&#xff0c; 那无非就是走索引&#xff0c; 避免回表查询&#xff08;覆盖索引&#xff0c;也就是不要用select * &#xff0c;走主键索引&#xff0c;叶子节点有…

基础算法--双指针算法

双指针算法 1.基本介绍 严格的来说&#xff0c;双指针只能说是是算法中的一种技巧。 双指针指的是在遍历对象的过程中&#xff0c;不是普通的使用单个指针进行访问&#xff0c;而是使用两个相同方向&#xff08;快慢指针&#xff09;或者相反方向&#xff08;对撞指针&#…

起底交易所JPEX:传销、诈骗,网红编织的香港加密新规第一案

香港的加密之火还在萌芽&#xff0c;就被迎头浇了一桶透心凉的冷水。 9月13日&#xff0c;香港证监会罕见点名一家虚拟资产平台JPEX&#xff0c;这也是自香港加密新规后&#xff0c;首个遭到红牌警告的虚拟资产交易所。 据证监会官网内容&#xff0c;JPEX通过社交媒体网红及场外…

MySQL进阶篇3-视图和存储过程以及触发器的学习使用

视图/存储过程&#xff08;函数&#xff09;/触发器 视图&#xff1a;由表动态生成&#xff0c;虚拟的表&#xff0c;保存的是sql的逻辑。 创建视图&#xff1a; ​ create [or replace] view viewName【列名列表】 as select 语句 [with [cascaded|local] check option] 修…

开源日报 0823 | NLP 民工的乐园:中文 NLP 资源库的终极指南

文章中介绍了几个非常有用的开源项目&#xff0c;适用于不同领域的开发者和研究者。其中&#xff0c;NLP 民工的乐园是一个非常全面的中文 NLP 资源库&#xff0c;提供了丰富的语料库、词库、词法工具和预训练语言模型&#xff0c;适用于不同的 NLP 相关任务。Poetry 是一个简化…

TOWE一转二家用无线遥控插座,让生活变得简单

随着科技的进步&#xff0c;人们的生活方式正在发生改变&#xff0c;越来越多的智能家居产品进入我们的生活中&#xff0c;为我们的生活带来了极大的便利。无线遥控插座作为一种集成了无线遥控技术与插座功能的创新产品&#xff0c;在家庭、办公、商业场景有着广泛的应用。同为…

q-learning强化学习使用基础

强化学习 通过策略的方式来学习&#xff0c;q-learing&#xff08;马尔科夫链模型&#xff09; 马尔科夫链&#xff1a;奖励*折扣因子&#xff0c;R(t)reward(1)yR(t1)&#xff0c;马尔可夫链多次迭代后分布趋于稳定所以可以得到最优解 q-learning 构建qtable&#xff0c;二…

亿发2023智能ERP生产系统解决方案实施,规范中大型企业生产精细化

随着制造水平的不断增强&#xff0c;传统工厂的管理方式已经不能满足现代制造的要求。为了确保公司战略目标的实现&#xff0c;中大型制造企业需要借助信息技术来强化对业务流程的管理&#xff0c;而生产制造ERP系统的实施已成为企业走向信息化的关键战略环节。 工厂信息化建设…