帮我写一个省市区三级联动的vue组件
时间: 2023-07-31 16:11:43 浏览: 106
好的,我可以为您提供一个简单的省市区三级联动的Vue组件实现。以下是代码示例:
```vue
<template>
<div>
<select v-model="selectedProvince" @change="provinceChanged">
<option value="">请选择省份</option>
<option v-for="province in provinces" :value="province">{{province}}</option>
</select>
<select v-model="selectedCity" @change="cityChanged">
<option value="">请选择城市</option>
<option v-for="city in cities" :value="city">{{city}}</option>
</select>
<select v-model="selectedDistrict">
<option value="">请选择区县</option>
<option v-for="district in districts" :value="district">{{district}}</option>
</select>
</div>
</template>
<script>
export default {
data() {
return {
provinces: [], // 省份列表
cities: [], // 城市列表
districts: [], // 区县列表
selectedProvince: '', // 当前选中的省份
selectedCity: '', // 当前选中的城市
selectedDistrict: '' // 当前选中的区县
};
},
mounted() {
// 获取省份列表
this.getProvinces();
},
methods: {
// 获取省份列表
getProvinces() {
// 此处省略省份数据的获取方法
this.provinces = ['广东省', '江苏省', '浙江省'];
},
// 获取城市列表
getCities(province) {
// 此处省略城市数据的获取方法
if (province === '广东省') {
this.cities = ['广州市', '深圳市', '珠海市'];
} else if (province === '江苏省') {
this.cities = ['南京市', '苏州市', '无锡市'];
} else if (province === '浙江省') {
this.cities = ['杭州市', '宁波市', '温州市'];
} else {
this.cities = [];
}
this.selectedCity = ''; // 清空选中的城市
this.selectedDistrict = ''; // 清空选中的区县
},
// 获取区县列表
getDistricts(city) {
// 此处省略区县数据的获取方法
if (city === '广州市') {
this.districts = ['天河区', '海珠区', '白云区'];
} else if (city === '深圳市') {
this.districts = ['福田区', '罗湖区', '南山区'];
} else if (city === '珠海市') {
this.districts = ['香洲区', '金湾区', '斗门区'];
} else if (city === '南京市') {
this.districts = ['玄武区', '秦淮区', '鼓楼区'];
} else if (city === '苏州市') {
this.districts = ['姑苏区', '相城区', '吴江区'];
} else if (city === '无锡市') {
this.districts = ['崇安区', '南长区', '北塘区'];
} else if (city === '杭州市') {
this.districts = ['西湖区', '余杭区', '拱墅区'];
} else if (city === '宁波市') {
this.districts = ['海曙区', '江东区', '鄞州区'];
} else if (city === '温州市') {
this.districts = ['鹿城区', '龙湾区', '瓯海区'];
} else {
this.districts = [];
}
this.selectedDistrict = ''; // 清空选中的区县
},
// 省份改变事件
provinceChanged() {
const province = this.selectedProvince;
if (province) {
this.getCities(province);
} else {
this.cities = [];
this.districts = [];
this.selectedCity = '';
this.selectedDistrict = '';
}
},
// 城市改变事件
cityChanged() {
const city = this.selectedCity;
if (city) {
this.getDistricts(city);
} else {
this.districts = [];
this.selectedDistrict = '';
}
}
}
};
</script>
```
以上代码实现了一个简单的省市区三级联动的Vue组件。当用户选择省份时,将自动获取该省份的城市列表并显示在第二个下拉框中;当用户选择城市时,将自动获取该城市的区县列表并显示在第三个下拉框中。
阅读全文