1. 程式人生 > 實用技巧 >【Vue自學筆記(四)】天氣案例

【Vue自學筆記(四)】天氣案例

請求地址:http://wthrcdn.etouch.cn/weather_mini
請求方法:get
請求引數:city (查詢的城市名)
響應內容:天氣資訊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 開發環境版本,包含了有幫助的命令列警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <!-- 官網提供的axios庫線上地址 -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>

<body>
    <div id="app">
        <div>
            <h2>天知道</h2>
            <!-- search中的引數其實就是data中的同名引數的值 -->
            <!-- 使用雙向繫結實現回車查詢和點選查詢 -->
            <input type="text" v-model="city" @keyup.enter="search(city)">
            <!-- 如果搜尋框中 -->
            <button @click="search(city)">搜尋</button>
        </div>
        <div>
            <!-- 和視訊不同使用的是一個list,點選事件呼叫的是一個帶有引數的查詢方法 -->
            <a v-for="(item,index) in cityArr" @click="search(cityArr[index])">{{cityArr[index]}}</a>
        </div>
        <div>
            <ul>
                <li v-for="(item,index) in weatherArr">
                    日期:{{item.date}}<br>
                    最高溫度:{{item.high}}
                    最低溫度:{{item.low}}
                    風向:{{item.fengli}}
                    級數:{{item.gl}}
                    天氣:{{item.type}}
                </li>
            </ul>
        </div>
    </div>
</body>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            cityArr: ["北京", "天津", "深圳", "廣州"],
            city: "",
            weatherArr: [],
        },
        methods: {
            search: function (a) {
                var _this = this
                axios.get("http://wthrcdn.etouch.cn/weather_mini?city=" + a)
                    .then(function (response) {
                        //列印response
                        console.log(response)
                        //將返回的引數賦值給weatherArr,注意層級
                        _this.weatherArr = response.data.data.forecast
                    })
                    .catch(function (err) { })
            }
        }
    })

</script>

</html>