vue生命周期+过滤器+拦截器作业

作业  :自行配置请求数据
需求说明
1、可以通过向 axios 传递相关配置来创建请求
2、参考配置数据,自行配置 get 方法请求数据以及包括传递参数的方式
3、点击按钮之后,可以请求到相应数据,效果如下图所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>拦截器demo</title>
    <script src="https://cdn.bootcss.com/vue/2.5.14/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
</head>
<body>
<div id="box">
    {{msg}}
    <button @click="load()">链接测试</button>
</div>

<script>
    let vm = new Vue({
        el:'#box',
        data:{
            msg:"jin",
        },
        mounted:function(){
            axios.interceptors.request.use(
                function(config){
                    console.log("请求拦截成功!")
                    return config;
                },
                function(eror){
                    console.log()
                    return Promise.reject(error);
                });
            axios.interceptors.response.use(
                function(config){
                    console.log("响应拦截成功!")
                    return config;
                },
                function(error){
                    return Promise.reject(error);
                });
        },
        methods:{
            load:function(){
                axios.get("http://localhost:8080/servlet/TestServlet").then(
                    value=>{
                    alert(value.data);
                    this.msg = value.data;
            }).catch(
                    error=>{
                    alert(error.status);
            });
            },
        }
    });
</script>

</body>
</html>

作业  :时间格式化
需求说明
1、格式化的规则是当 月份、日期、小时等小于 10 的时候,前面补上 0
2、对需要过滤的数据调用定义的规则进行处理,并返回处理之后的结果
3、使用 mounted 生命周期函数,每隔 1s 更新一下时间
4、使用 beforeDestroy 生命周期函数,在组件销毁前清除定时器,效果如
下图所示:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>时间格式</title>
	 <script src="https://cdn.bootcss.com/vue/2.5.14/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
</head>
<body>
	<div id="box">
    {{msg | Change}}
</div>
<script>
		let vm = new Vue({
        el:'#box',
        data:{
            msg:null,
            sss:null,
        },
        mounted:function(){
        	this.fn3();
        },
        beforeDestroy:function(){
        	console.log("jin")
        	clearInterval(this.sss);
        },
        methods:{
        		fn2(){
					this.msg=new Date();
					// this.time=this.fn1(this.time);
					},
				fn3(){
					this.sss = setInterval(this.fn2,1000);
					}	
        	},
        	filters:{
        		Change:function(date){
				// alert(value)
				// value = value.substring(0,19);    
				// value = value.replace(/-/g,'/'); 
				// var timestamp = new Date(value).getTime();
				// var date = new Date(timestamp);

 				var year = (date.getFullYear()).toString(); 
 				var month =(date.getMonth() + 1).toString(); 
 				var day = (date.getDate()).toString();  
 				var hours = (date.getHours()).toString();
 				var minute = (date.getMinutes()).toString();
  				var second = (date.getSeconds()).toString();
  				if (month.length == 1) { 
  				    month = "0" + month; 
  				} 
  				if (day.length == 1) { 
  				    day = "0" + day; 
  				}
  				if (hours.length == 1) {
  						hours = "0" + hours;
  				}
  				if (minute.length == 1) {
  						minute = "0" + minute;
  				}
  				if (second.length == 1) {
  						second = "0" + second;
  				}
  				var dateTime = year + "-" + month + "-" + day +" "+hours+":"+minute+":"+second;
  				// return dateTime; 
  				// this.msg = dateTime;
        			return dateTime;
        		}
        		,
        			

        	}

    	});
</script>
</body>
</html>

《 交互与实例的生命周期 》上 机作业
业 作业  :彩妆热卖产品列表
需求说明
1、布局完成彩妆热卖产品列表样式
2、利用生命周期函数,模拟在组件挂载之后利用得到的后台数据去渲染列
表,这里的后台数据会提供,效果如下图所示:

[{
            num: 1,
            name: 'Za姬芮新能真皙美白隔离霜 35g',
            imgUrl: "image/icon-1.jpg",
            desc:"¥59.90 最近13403人购买"
        }, {
            num: 2,
            name: '美宝莲精纯矿物奇妙新颜乳霜BB霜 30ml',
            imgUrl: "image/icon-2.jpg",
            desc:"¥89.00 最近13610人购买"
        }, {
            num: 3,
            name: '菲奥娜水漾CC霜40g',
            imgUrl: "image/icon-3.jpg",
            desc:"¥59.90 最近13403人购买"
        }, {
            num: 4,
            name: 'HC 蝶翠诗橄榄卸妆油 200ml',
            imgUrl: "image/icon-4.jpg",
            desc:"¥169.00 最近16757人购买"
        }]

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <script src="https://cdn.bootcss.com/vue/2.5.14/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>

    <div id="box">
    	<ul>
    		<li v-for="(item,index) in arr">
    			<h3>{{item.num}}--{{item.name}}</h3><br>
    			<img v-bind:src="item.imgUrl" alt="0"><br>
    			<span><em>{{item.desc}}</em></span>


    		</li>
    	</ul>
    </div>

    <script>
    	let vm = new Vue({
    		el:'#box',
    		data:{
    			arr:[],
    			msg:"j9in",
    		},
    		mounted:function(){
    			this.load();
    		},
    		methods:{
    			load:function(){
    				axios.get("http://localhost:8080/servlet/TestServlet").then(
    					value=>{
    						// alert(value.data)
    						// this.msg=value.data;
    						this.arr = value.data;	
    					}).catch(
    						error=>{
    							alert(error.status)
    						})
    			}//load
    		}
    	})
    </script>
</body>
</html>

《 交互与实例的生命周期 》上 机作业
业 作业  :自动筛选案例
需求说明
1、布局完成自动筛选案例样式,上方为输入框,下面为表格布局
2、表格数据利用 v-for 指令遍历数据生成
3、自定义过滤器实现首字母大写的功能
4、在计算属性中实现动态过滤 data 中的数据项,效果如下图所示:

name    Gender    Age
rick    male    21
demen    male    26
Jack    male    26
John    female    20
Lucy    female    16

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>index</title>
	<style>
		#box{
			width: 400px;
			height: 400px;
			margin: auto;
		}
	</style>
</head>
<body>
	<script src="https://cdn.bootcss.com/vue/2.5.14/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>

    <div id="box">
    	
    	<div><span>搜索名称:</span><input type="text" v-model="msg" @blur="find()"><!-- {{msg}} --></div>
    	<div>
    		<table v-if="arr2.length>0" border="1">
    			<tr>
    				<td>Name</td>
    				<td>Gender</td>
    				<td>Age</td>
    			</tr>
    			<tr v-for="item in arr2">
    				<td>{{item.Name | big}}</td>
    				<td>{{item.Gender}}</td>
    				<td>{{item.Age}}</td>
    			</tr>
    		</table>
    	</div>
    </div>

    <script>
    	let vm = new Vue({
    		el:'#box',
    		data:{
    			arr:[{Name:"rick",Gender:"male",Age:"21"},
    			{Name:"demen",Gender:"male",Age:"21"},
    			{Name:"Jack",Gender:"male",Age:"26"},
    			{Name:"John",Gender:"female",Age:"20"},
    			{Name:"Lucy",Gender:"female",Age:"16"}],
    			msg:"",
    			arr2:[]
    		},
    		methods:{
    			find:function(){
    				let str = this.msg;
    				let arr3 = [];
    				this.arr.forEach(function(item){
    					if (str.toLowerCase()==((item.Name).slice(0,str.length)).toLowerCase()) {
    						arr3.push(item);
    					}
    				})
    				this.arr2 = arr3;
    			}
    		},
    		filters:{
    			big:function(value){
    				result = value.slice(0,1).toUpperCase()+value.slice(1,value.length);
    				return result;
    			},

    		}
    	})//alert(stmp.slice(1,5))//从第2个字符开始,到第5个字符;返回"cinn"
    </script>
   
</body>
</html>

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值