基于ElementUI封装省市区四级联动下拉选择
在Vue中基于ElementUI封装一个省市区四级联动下拉选择组件的基本思路是创建一个Vue组件,该组件使用el-select
来实现选择器,并根据所选择的选项更新对应的下级选项列表。
以下是一个简单的示例:
<template>
<div>
<el-select v-model="selectedProvince" placeholder="请选择省份" @change="handleProvinceChange">
<el-option v-for="province in provinces" :key="province.value" :label="province.label" :value="province.value"></el-option>
</el-select>
<el-select v-model="selectedCity" placeholder="请选择城市" @change="handleCityChange">
<el-option v-for="city in cities" :key="city.value" :label="city.label" :value="city.value"></el-option>
</el-select>
<el-select v-model="selectedArea" placeholder="请选择区/县">
<el-option v-for="area in areas" :key="area.value" :label="area.label" :value="area.value"></el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
provinces: [],
cities: [],
areas: [],
selectedProvince: '',
selectedCity: '',
selectedArea: ''
};
},
methods: {
handleProvinceChange(value) {
// 根据省份value更新城市列表
this.cities = this.getCitiesByProvince(value);
this.selectedCity = '';
this.selectedArea = '';
},
handleCityChange(value) {
// 根据城市value更新区/县列表
this.areas = this.getAreasByCity(value);
this.selectedArea = '';
},
getCitiesByProvince(provinceValue) {
// 模拟从数据库或API获取城市列表
return [
{ label: '城市1', value: 'city1' },
{ label: '城市2', value: 'city2' }
];
},
getAreasByCity(cityValue) {
// 模拟从数据库或API获取区/县列表
return [
{ label: '区/县1', value: 'area1' },
{ label: '区/县2', value: 'area2' }
];
}
},
mounted() {
// 初始化省份列表
this.provinces = this.getCitiesByProvince('province1');
// 假设初始化时选择第一个省份
this.selectedProvince = this.provinces[0].value;
// 根据省份初始化城市列表
this.cities = this.getCitiesByProvince(this.selectedProvince);
// 假设初始化时选择第一个城市
this.selectedCity = this.cities[0].value;
// 根据城市初始化区/县列表
this.areas = this.getAreasByCity(this.selectedCity);
}
};
</script>
评论已关闭