vue在页面中制作一个省、市、区3级联动的下拉菜单,根据选择的省份(至少3个)显示对应的城市(至少3个)下拉菜单,根据选择的城市显示对应的区域(所有)下拉菜单。
时间: 2023-12-14 16:39:59 浏览: 156
这里提供一种简单的实现方式,使用Vue.js和element-ui组件库。
首先,我们需要创建三个下拉菜单分别对应省、市、区,以及一个数据源用于存储省市区数据。
```html
<template>
<div>
<el-select v-model="province" placeholder="请选择省份" @change="handleProvinceChange">
<el-option v-for="item in provinceList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-select v-model="city" placeholder="请选择城市" @change="handleCityChange">
<el-option v-for="item in cityList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-select v-model="area" placeholder="请选择地区">
<el-option v-for="item in areaList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</div>
</template>
```
在Vue实例中,我们需要定义三个变量来存储当前选择的省、市、区,以及一个数据源变量存储省市区数据。
```javascript
<script>
export default {
data() {
return {
province: '',
city: '',
area: '',
provinceList: [],
cityList: [],
areaList: []
}
},
methods: {
// 省份选择变化时触发
handleProvinceChange(value) {
// 根据选择的省份更新城市列表
this.cityList = this.dataList.find(item => item.value === value).children
// 清空已选择的城市和地区
this.city = ''
this.area = ''
},
// 城市选择变化时触发
handleCityChange(value) {
// 根据选择的城市更新地区列表
this.areaList = this.cityList.find(item => item.value === value).children
// 清空已选择的地区
this.area = ''
}
},
mounted() {
// 加载省市区数据
this.dataList = [
{
label: '北京市',
value: '110000',
children: [
{
label: '北京市',
value: '110100',
children: [
{
label: '东城区',
value: '110101'
},
{
label: '西城区',
value: '110102'
},
{
label: '朝阳区',
value: '110105'
},
// 其他行政区划
]
},
// 其他城市
]
},
// 其他省份
]
// 初始化省份列表
this.provinceList = this.dataList.map(item => ({ label: item.label, value: item.value }))
}
}
</script>
```
在上述代码中,我们定义了两个方法:`handleProvinceChange`和`handleCityChange`。这两个方法会在省份和城市选择变化时触发,用于更新城市和地区的下拉菜单列表。
在`mounted`生命周期函数中,我们加载了省市区数据,并初始化了省份列表。
以上就是一个简单的省、市、区3级联动的下拉菜单实现方式。需要注意的是,本例使用了element-ui组件库,所以要先安装并引入该组件库才能正常运行。
阅读全文