VueDemo2:天气预报

VueDemo2:天气预报

一、输入查询
1.按下回车(v-on,enter)
2.查询数据(axios 接口 v-model)
3.渲染数据(v-for 数组 that)

应用的逻辑代码建议和页面分离,使用单独的js文件编写
axios回调函数中this指向改变了,需要额外的保存一份
服务器返回的数据比较复杂时,获取的时候需要注意层级结构

二、点击查询
1.点击城市(v-on 自定义参数)
2.查询数据
3.渲染数据

自定义参数可以让代码的复用性更高
methods中定义的方法内部,可以通过this关键字点出其他的方法

html:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>天气预报</title>
		<script src="vue.js" type="text/javascript" charset="UTF-8"></script>
		<script src="axios.min.js"></script>
	</head>
	<body>
		<div id="app">
			<!-- 查询模块 -->
			<div class="search_form">
				<input type="text" @keyup.enter="searchWeather" v-model="city" placeholder="请输入查询的天气" class="input_txt" />
				<button class="input_sub" @click="searchWeather">
					搜 索
				</button>
			</div>
			<!-- 城市选择 -->
			<div class="hotkey">
				<a href="javascript:;" @click="changeCity('北京')">北京</a>
				<a href="javascript:;" @click="changeCity('上海')">上海</a>
				<a href="javascript:;" @click="changeCity('广州')">广州</a>
				<a href="javascript:;" @click="changeCity('深圳')">深圳</a>
			</div>
			<!-- 查询结果展示 -->
			<ul class="weather_list">
				<!-- 每天的预报情况 -->
				<li v-for="item in weatherList">
					<div>
						<span> {{item.type}}</span>
						<div>
							<b>{{item.low}}</b>
							<b>{{item.high}}</b>
						</div>
						<div>
							<span>{{item.date}}</span>
						</div>
					</div>
				</li>
			</ul>
		</div>
		<!-- 自己的js -->
		<script src="./WeatherForecastMainjs.js"></script>
	</body>
</html>

JS:

/*
	请求地址:http://wthrcdn.etouch.cn/weather_mini
	请求方法:get
	请求参数:city(城市名)
	响应内容:天气信息
	
	1.点击回车
	2.查询数据
	3.渲染数据
*/

var app = new Vue({
	el:"#app",
	data:{
		city:'',
		weatherList:[],
	},
	methods:{
		searchWeather:function(){
			// console.log(this.city);
			// 保存this
			var that = this;
			//调用接口
			axios.get('http://wthrcdn.etouch.cn/weather_mini?city='+this.city)
			.then(function(response){
				console.log(response.data.data.forecast);
				that.weatherList = response.data.data.forecast;
			},
			function(err){
				console.log(err);
			})
			.catch(function(err){
				console.log(err);
			})
		},
		changeCity:function(city){
			this.city = city;
			this.searchWeather();
		}
	},
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值