Vue语法_day06

1.属性绑定

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
		<style>
			/* 红色 */
			.red{
				background-color: red;
				width: 50px;
				height: 50px;
			}
			.blue{
				background-color: blue;
				width: 100px;
				height: 100px;
			}
		</style>
	</head>
	<body>
		<script src="../js/vue.js"></script>
		<div id="app">
		  <!-- href中的属性动态赋值 语法v-bind:href-->
		  <a  v-bind:href="url">百度</a><br />
		  <!-- 简化写法:href -->
		  <a  :href="url">百度</a><br>
		  <!-- class类型绑定,动态为class赋值,规则:class属性动态绑定,
		  绑定之后要查找对应的属性 -->
		  <div :class="colorClass">我是class修饰</div>
		  <br />
		  <hr />
		  <!-- 属性切换 :通过按钮控制样式是否展现
		       :class="{class类型名称:false}"  -->
		  <div :class="{red:flag}">我是class修饰符</div><br />
		  <div :class="{blue:flag}">我是class修饰符2</div>
		  <button @click="flag=!flag">切换</button>
		  
		  <!-- 小结:
		   1、如果是切换属性:class="属性"
		   2、如果属性修饰是否展现:class="{class类型名称:false}"-->
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
					url:"http://www.baidu.com" ,
					colorClass:"red" ,
					flag:true
				}
			})
		</script>
	</body>
</html>

2.分支结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
		<style>
		</style>
	</head>
	<body>
		<script src="../js/vue.js"></script>
		<div id="app">
		   <!-- 按照用户考试成绩进行评级 -->
		  	<!-- 分支结构:
			 语法:v-if、v-else-if、v-else-->	   
			 <h1>评级</h1>
			 输入分数:<input v-model="score"/>
			 <div v-if="score>=90">优秀</div>
			 <div v-else-if="score>=80">良好</div>
			 <div v-else-if="score>=70">中等</div>
			 <div v-else-if="score >=60">及格</div>
			 <div v-else="score <60">不及格</div>
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
					score:99
				}
			})
		</script>
	</body>
</html>


3.循环结构

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VUE入门案例</title>
		<style>
		</style>
	</head>
	<body>
		<script src="../js/vue.js"></script>
		<div id="app">
		  
		   <!-- 遍历数组 -->
		   <a v-for="item in array" v-text="item"></a>
		   
		   <br />
		   <a v-for="(item,index) in array">
			   下标:{{index}}~~~~元素:{{item}}<br />
		   </a>
		   
		   <!-- 遍历对象 -->
		   <a v-for="(value,key,index) in user" >
			   {{index}}~~{{key}}~~~{{value}}<br/>
		   </a>
		   <!-- 遍历集合 -->
		   <a v-for="user in userList">
			   ID:{{user.id}}|name:{{user.name}}|age:{{user.age}}
			   <!-- 嵌套循环 -->
			   <p v-for="(value,key,index) in user">
				 {{index}}~~{{key}}~~~{{value}}<br/>  
			   </p>
		   </a>
		   <!-- 总结: 1.如果遍历数组 参数(value,index)
			          2.遍历对象 参数(valus,key,index)
					  特点:遍历数据在页面中展现
			-->
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
					score:99,
					array:["郭晶晶","马龙","姚明"],
					user:{
						id:100,
						name:"郭晶晶",
						age:33
					},
					userList:[
						{
							id:100,
							name:"郭晶晶",
							age:33
						},
					]
				}
			})
		</script>
	</body>
</html>


4.表单操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>常用表单属性</title>
	</head>
	<body>
		<h1>本案例练习 表单提交数据时  数据如何与vue进行数据绑定</h1>
		<div id="app">
			<form id="userForm"action="http://www.baidu.com">
				<div>
					<span>
						姓名:
					</span>
					<span>
						<input type="text" name="name" v-model="name"/>
					</span>
				</div>
				<div>
					<span>性别:</span>
					<span>
						<!-- 单选框: name属性必须一致 -->
						<input type="radio" name="gender" value="男" id="man" v-model="gender"/>
						<label for="man"></label>
						<input type="radio" name="gender" value="女" id="women" v-model="gender"/>
						<label for="women"></label>
					</span>
				</div>
				<div>
					<span>爱好:</span>
					<input type="checkbox" name="hobbies" value="吃" v-model="hobbies"/><input type="checkbox" name="hobbies" value="喝" v-model="hobbies"/><input type="checkbox" name="hobbies" value="玩" v-model="hobbies"/></div>
				<div>
					<span>职业</span>
					<!-- 如果需要设置为多选 则添加属性 -->
					<select name="occupation" v-model="occupation" multiple="true">
						<option value="工人">工人</option>
						<option value="教师">教师</option>
						<option value="工程师">工程师</option>
					</select>
				</div>
				<div>
					<span>个人简介</span>
					<textarea name="userInfo" style="width: 200px;height: 50px;" v-model="userInfo"></textarea>
				</div>
				<div>
					<!-- 阻止默认提交事件 -->
					<input type="submit"  value="提交" v-on:click.prevent="submitForm"/>
				</div>
			</form>
		</div>
		
		
		<!-- 引入JS文件 -->
		<script src="../js/vue.js"></script>
		<script>
			const app = new Vue({
				el:	"#app",
				data: {
					name: '输入名称',
					gender: '女',
					//多个数据定义时 应该使用数组
					hobbies:	['吃','喝','玩'],
					occupation: ['工人'],
					userInfo: ''
				},
				methods: {
					submitForm(){
						//数据提交
						console.log("姓名:"+this.name)
						console.log("性别:"+this.gender)
						console.log('爱好:'+this.hobbies)
						console.log('职业:'+this.occupation)
						console.log('用户详情:'+this.userInfo)
						console.log('封装好数据之后,可以使用ajax方式实现数据提交')
					}
				}
			})
		</script>
	</body>
</html>


5.表单修饰符

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src=../js/vue.js></script>
		<div id="app">
			<!-- 语法: 
			.number 只能输入数值类型
			.trim 去除数据两端空格
			.lazy 离焦事件才触发-->
			
			<!-- .number -->
			<h3>数据展示:{{age}}</h3>
			输入数据:<input type="text" v-model.number="age" /><br />
			<button @click="age++">增加</button>
			<hr />
			<!-- .trim -->
			<h2>用户输入长度:{{user.length}}</h2><br />
			用户名:<input type="text" v-model.trim="user"/>
			<hr />
			<!-- .lazy -->
			展现用户数据:lazy~~~~{{msg}}<br />
			输入用户数据:<input type="text" v-model.lazy="msg" />
			
			
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
					age:100,
					user:'',
					msg:'null'
				},
				methods:{
					
				}
			})
		</script>
	</body>
</html>

6.计算属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src=../js/vue.js></script>
		<!-- 
		    将用户输入内容进行反转
			API:1、字符串转成数组 拆串 split('')
			2 将数组倒序 .reverse()
			3 将数组拼接成字符串 .join('')
		计算属性功能用法:
			1.插值表达式中应该写简单的算数计算,如果复杂应该封装
			2.如果数据操作相同则应该简化过程.
			总结: 计算属性相对于方法 效率高(从虚拟DOM中直接获取结果)
		 -->
		<div id="app">
			
			数据展现:{{reverse()}}<br />
			数据展示:{{reverseCom}}<br />
		
			<input v-model.lazy="msg"  type="text"/><br />
			
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
				 msg:''
				},
				methods:{
					reverse(){
					console.log("方法执行!")
					return this.msg.split('').reverse().join('')
					}
				},
				computed:{
					reverseCom(){
					console.log("计算属性执行!")
					return this.msg.split('').reverse().join('')	
					}
				}
			})
		</script>
	</body>
</html>

7.数组操作

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script src=../js/vue.js></script>
		<!-- 数组操作常用方法:
		  push() 结尾追加
		  pop()  删除最后一个
		  shift()  删除第一个元素
		  unshift() 在开头追加元素
		  splice() 替换数组中的数据
		  sort() 数据排序
		  reverse() 数组反转
		  -->
		<div id="app">
		
		输入框:<input v-model="msg" type="text" /><br />
		<a v-for="(item,index) in array">
			{{item}}<br />
		</a><br />	
		<!-- push操作 -->
		<button @click="push">push</button><br />
		<!-- pop操作 -->
		<button @click="pop">pop</button><br />
		<!--  shift()操作-->
		<button @click="shift">shift</button><br />
		<!--  unshift()操作-->
		<button @click="unshift">unshift</button><br />
		<!--  splice()操作-->
		<button @click="splice1">splice(2->1)</button><br />
		<button @click="splice2">splice(2->2)</button><br />
		<button @click="splice3">splice(last)</button><br />
		<button @click="splice4">splice(删除)</button><br />
		</div>
		<script>
			const APP=new Vue({
				el:"#app",
				data:{
				 array:[
					 "a",
					 "b",
					 "c",
					 "d"
				 ],
				 msg:'v'
				},
				methods:{
					push(){
						this.array.push(this.msg)
					},
					pop(){
						this.array.pop()
					},
					shift(){
						this.array.shift()
					},
					unshift(){
						this.array.unshift(this.msg)
					},
					splice1(){
						this.array.splice(0,2,this.msg)
					},
					splice2(){
						this.array.splice(0,2,this.msg,this.msg)
					},
					splice3(){
						this.array.splice(this.array.length-1,this.array.length,this.msg)
					},
					splice4(){
						// 如果只有两个参数那么就是删除数组元素的操作
						this.array.splice(1,1)
					}
				},
				computed:{
					
				}
			})
		</script>
	</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值