城市组件
//City.vue
<script>
import axios from 'axios'
import CityHeader from './components/Header'
import CitySearch from './components/Search'
import CityList from './components/List'
import CityAlphabet from './components/Alphabet'
export default {
name: 'City',
components: {
CityHeader,
CitySearch,
CityList,
CityAlphabet
},
data () {
return {
cities: {},
hotCities: []
}
},
methods: {
getCityInfo () {
axios.get('/api/city.json')
.then(this.handleGetCityInfoSucc)
},
handleGetCityInfoSucc (res) {
res = res.data
if (res.ret && res.data) {
const data = res.data
this.cities = data.cities
this.hotCities = data.hotCities
}
}
},
mounted () {
this.getCityInfo()
}
}
</script>
子组件
//City.vue
<template>
<div>
<city-header></city-header>
<city-search></city-search>
<city-list :cities = "cities" :hot = "hotCities"></city-list>
<city-alphabet :cities="cities"></city-alphabet>
</div>
</template>
子组件数据显示
//CityList
//只包括这篇讲的AJAX数据接收 不包括之前的那个better-scroll
<script>
export default {
name: 'CityList',
props: {
hot: Array,
cities: Object
}
}
</script>
<div class="area" v-for="(item, key) of cities" :key="key">
<div class="title border-topbottom">{{key}}</div>
<div class="item-list" v-for="innerItem of item" :key="innerItem.id">
<div class="item border-bottom">{{innerItem.name}}</div>
</div>
//CityAlphabet
<template>
<ul class="list">
<li class="item" v-for="(item, key) of cities" :key="key">{{key}}</li>
</ul>
</template>
<script>
export default {
name: 'CityAlphabet',
props: {
cities: Object
}
}
</script>