vue模板语法详细解释2

一样式绑定

将原来写在style中的代码定义为变量然后通过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>
	<style type="text/css">
		.f100 {
			font-size: 100px;
		}
	</style>
	<body>
		<div id='app'>
			<!-- 将样式写入变量通过color取到color:red
			 通过size取到f100-->
			<h3 :class="size" :style="color">{{msg}}</h3>
		</div>
	</body>
	<script type="text/javascript">
		new Vue({
			el: '#app',
			data() {
				return {
					msg: 'helllo word',
					color: 'color:red;',
					size: 'f100'
				}
			}
		})
	</script>
</html>

在这里插入图片描述

二事件

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>
<!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>
	<style type="text/css">
		.red {
			height: 300px;
			width: 300px;
			background-color: red;
		}
		.black {
			height: 200px;
			width: 200px;
			background-color: black;
		}
		.blue {
			height:100px;
			width: 100px;
			background-color: blue;
		}
	
	</style>
	<body>
		<div id='app'>
			<h3>冒泡事件</h3>
			<!-- 给三个div设置三个点击事件@设置大小和颜色是v-on:缩写 -->
			<div class="red" @click="red">
				<div class="black"  @click="black">
					<div class="blue" @click="blue">
					</div>
				</div>
			</div>
		</div>
	</body>
	<script type="text/javascript">
		new Vue({
			el: '#app',
			data() {
				return {
					msg: 'helllo word'
				}
			},
			methods:{
				red(){
					alert("red");
				},
				black(){
					alert("black");
				},
				blue(){
					alert("blue");
				}
			}
		})
	</script>
</html>

点击蓝色div的同时相当于也点击了黑色和红色
所以会有触发黑色div和红色div的点击事件
我们再代码上面加上stop无论点击谁都只会触发当前点击的事件不会触发三个事件

<div class="red" @click.stop="red">
				<div class="black"  @click.stop="black">
					<div class="blue" @click,stop="blue">
					</div>
				</div>
			</div>
		</div>

在这里插入图片描述
按键的快捷键
将触发事件的方式由点击给按键

<input v-on:keyup.enter="方法"/>
  **.enter
  .tab
  .delete (捕获 "删除" 和 "退格" 键)
  .esc
  .space
  .up
  .down
  .left
  .right
  .ctrl
  .alt
  .shift
  .meta**      

三自定义组件

<!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 m="小明"></mybutton>
		</div>
	</body>
	<script type="text/javascript">
		
		Vue.component("mybutton", {
			//参数m
			props: ["m"],
			template: "<button v-on:click='incrn'>我被{{m}}点击了{{n}}次</button>",
			data: function() {
				return {
					n: 1
				}
			},
			methods:{
				incrn(){
					this.n++;
				}
			}
		});
		new Vue({
			el: '#app',
			data() {
				return {
				}
			}
		})
	</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'>
			<!-- 自己定义的组件 -->
			//three-click自定义的事件
			//xxx方法的参数要与事件的参数一致
			<mybutton m="小明" v-on:three-click="xxx"></mybutton>
		</div>
	</body>
	<script type="text/javascript">
		
		Vue.component("mybutton", {
			//参数m
			props: ["m"],
			template: "<button v-on:click='incrn'>我被{{m}}点击了{{n}}次</button>",
			data: function() {
				return {
					n: 0
				}
			},
			methods:{
				incrn(){
					console.log("incrn方法被调用");
					this.n++;
					if(this.n%3==0){
					//触发自定义组件触发的事件,可以传递任意参数
					//但触发的事件绑定的函数要与参数个数一致three-click(是自定义的事件相当于click点击事件一样)
					//this.n,"aaaaaaa"是传过去的参数
					this.$emit('three-click',this.n,"aaaaaaa")	
					}
				}
			}
		});
		new Vue({
			el: '#app',
			methods:{
				xxx(a,b,c){
					console.log("three-click方法被调用");
					console.log(a);
					console.log(b);
					console.log(c);
				}
			}
			
		});
	</script>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值