vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车

  • 插值
  • 指令
  • 过滤器
  • 计算属性&监听属性
  • vue购物车

1.插值

<!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">
			.f30{
				font-size: 30px;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<p>文本</p>
			{
   
   {msg}}
			<p>html解析</p>
			<p>字体颜色变黄</p>
			<b v-html="msg2"></b>
			<p>字体变黄变大</p>
			<b :class="msg3" v-html="msg2"></b>
			<p>表达式</p>
			{
   
   {num+1}}<br />
			{
   
   {warn.substr(0,2)}}<br />
			<input v-model="ok"/>
			{
   
   {ok==1?'被抓了':'有内鬼'}}
		</div>
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
						msg:'hello 小兵',
						msg2:'<span style="color:yellow">hello 小兵</span>',
						msg3:'f30',
						num:6,
						warn:'条子来了',
						ok:1
					};
				}
			});
		</script>
		
	</body>
</html>

<!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>
	</head>
	<body>
		<div id="app">
			<p>v-if/v-else-if/v-else</p>
			<input v-model="score"/><br />
			<b v-if="score<60">不及格</b>
			<b v-else-if="score>=60 && score<70">及格</b>
			<b v-else-if="score>=70 && score<80">一般</b>
			<b v-else-if="score>=80 && score<90">良好</b>
			<b v-else="">优秀</b>
			60以下 不及格
			60-70 及格
			70-80 一般
			80-90 良好
			90-100 优秀
			
			<p>v-show</p>
			v-if与v-show的区别<br />
			<b v-if="isShow">展示</b>
			<b v-show="isShow">展示</b>
			
			<p>v-for</p>
			<i v-for="a in arr">{
   
   {a}}&nbsp;&nbsp;</i>
			<i v-for="i,u in users">&nbsp;&nbsp;{
   
   {i}}</i>
			<select>
				<option v-for="h in hobby" :value="h.id">{
   
   {h.name}}</option>
			</select>
			<div id="" v-for="h in hobby"    	>
				<input type="checkbox" name="hobby"  :value="h.id" />{
   
   {h.name}}
			</div>
			
		</div>
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
						score:34,
						isShow:false,
						arr:[1,2,3,4],
						users:[{
							name:'ab',id:1
						},{
							name:'ac',id:2
						},{
							name:'ad',id:3
						},{
							name:'ae',id:4
						}],
						hobby:[{
							name:'保健',id:1
						},{
							name:'理发',id:2
						},{
							name:'洗头',id:3
						},{
							name:'养生',id:4
						}]
					};
				}
			});
		</script>
	</body>
</html>

 

 3.过滤器

<!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>
		<script src="date.js" type="text/javascript" charset="utf-8"></script>
		<title>过滤</title>
	</head>
	<body>
		<div id="app">
			<p>局部过滤器基本应用</p>
			{
   
   {msg}}<br />
			{
   
   {msg | filterA}}
			<p>局部过滤器串行使用</p>
			{
   
   {msg}}<br />
			{
   
   {msg | filterA | filterB}}
			<p>局部过滤器传参</p>
			{
   
   {msg | filterC(3,10)}}<br />
			<p>全局过滤器</p>
			{
   
   {time}}<br />
			{
   
   {time | fmtDateFilter}}
		</div>
		<script type="text/javascript">
			Vue.filter('fmtDateFilter',function(value){
				return fmtDate(value);
			});
			new Vue({
				el:'#app',
				filters:{
                   'filterA':function(v){
					   return v.substring(0,6);
				   },
				   'filterB':function(v){
				   	   return v.substring(2,5);
				    },
				   'filterC':function(v,begin,end){
				   	   return v.substring(begin,end);
				    }
				},
				data(){
					return{
						msg:'小猪同学,你的好基友被抓了',
						time:new Date()
					};
				}
				,methods:{
					test(){
						// 单击事件,双击事件
						alert('点我试试!!');
					}
				}
			});
		</script>
	</body>
</html>

4.计算属性&监听属性

<!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>
	</head>
	<body>
		<div id="app">
			<p>计算属性</p>
			单价:<input v-model="price"/>
			数量:<input v-model="num"/>
			小计:{
   
   {count}}
			
			<p>监听属性</p>
			千米:<input v-model="km"/><br />
			米:<input v-model="m"/><br />
		</div>
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
						price:78,
						num:1,
						km:1,
						m:1000
					};
				},
				computed:{
					count:function(){
						return this.price * this.num;
					}
				},
				watch:{
					km:function(v){
						// v指的是被监听的属性,是km
						this.m=parseInt(v) * 1000;
					},
					m:function(v){
						// v指的是被监听的属性,是m
						this.km=parseInt(v) / 1000;
					}
				}
			});
		</script>
		
	</body>
</html>

5.vue购物车

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title>vue购物车</title>
		
	</head>
	<body>
		<div id="app">
			<div v-if="cart.length==0">
				<p>购物车为空</p>
			</div>
			<!-- //st实体,xb下标 -->
			<div v-else v-for="st,xb in cart" :key="xb">
				<p>名称:{
   
   {st.name}}</p>				
				<p>价格:{
   
   {st.price}}</p>
				<p>数量:{
   
   {st.num}}</p>
				<p>单价:{
   
   {st.price * st.num}}</p>
				<button @click="increaseQuantity(xb)">+</button>
				{
   
   {st.num}}
			    <button @click="decreaseQuantity(xb)">-</button>
				<button @click="removeFramCart(xb)">移除</button>
			</div>
		</div>
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data(){
					return{
						cart:[
							{id:1,name:'香蕉',price:10,num:1},
							{id:2,name:'橘子',price:20,num:1},
							{id:3,name:'西瓜',price:16,num:1},
						],
					};
				},
				methods:{
					
					removeFramCart(xb){
					    this.cart.splice(xb,1);	
					},
					increaseQuantity(xb) {
					    this.cart[xb].num++;
					},
					decreaseQuantity(xb){
						if(this.cart[xb].num > 1){
							this.cart[xb].num--;
						}else{
							removeFramCart(xb);
						}
					},
				},
			});
		</script>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_73471776/article/details/132997891