vue select 省市县三级联动
时间: 2023-08-31 20:10:31 浏览: 96
Vue Select 省市县三级联动的实现,一般需要以下步骤:
1. 引入相关组件和数据
你需要引入以下组件:
- vue-select:用于选择省、市、县
- axios:用于获取省市县数据
还需要定义三个数组,分别存放省、市、县的数据。
2. 获取省市县数据
你可以使用 axios 发起请求获取省市县数据,然后在获取到数据后将其存储到对应的数组中。
3. 实现省市县三级联动
在 vue-select 中,你可以通过监听选中的值来动态改变下一级的选项列表。
例如,当选择了一个省份时,你可以根据该省份的 ID 获取该省份下的所有市,然后更新市的选项列表。同理,当选择了一个市时,你可以根据该市的 ID 获取该市下的所有县,然后更新县的选项列表。
4. 绑定选中的值
最后,你需要将选中的省、市、县的值绑定到对应的变量中,以便在表单提交时使用。
以下是一个简单的示例代码:
```
<template>
<div>
<v-select v-model="province" :options="provinces" @input="onProvinceChange"></v-select>
<v-select v-model="city" :options="cities" @input="onCityChange"></v-select>
<v-select v-model="county" :options="counties"></v-select>
</div>
</template>
<script>
import axios from 'axios';
import VueSelect from 'vue-select';
export default {
components: {
VueSelect,
},
data() {
return {
provinces: [],
cities: [],
counties: [],
province: '',
city: '',
county: '',
};
},
mounted() {
this.getProvinces();
},
methods: {
getProvinces() {
axios.get('/api/provinces').then((response) => {
this.provinces = response.data;
});
},
getCities(provinceId) {
axios.get(`/api/cities/${provinceId}`).then((response) => {
this.cities = response.data;
});
},
getCounties(cityId) {
axios.get(`/api/counties/${cityId}`).then((response) => {
this.counties = response.data;
});
},
onProvinceChange() {
if (this.province) {
this.getCities(this.province.id);
} else {
this.cities = [];
}
this.city = '';
this.county = '';
},
onCityChange() {
if (this.city) {
this.getCounties(this.city.id);
} else {
this.counties = [];
}
this.county = '';
},
},
};
</script>
```
其中,`getProvinces()`、`getCities()` 和 `getCounties()` 方法分别用于获取省、市、县的数据;`onProvinceChange()` 和 `onCityChange()` 方法分别用于监听省、市的选中值的变化,并更新市、县的选项列表。
在模板中,你需要使用 `v-select` 组件来渲染下拉框,并使用 `v-model` 指令来双向绑定选中的值。同时,你需要使用 `@input` 事件来监听选择项的变化,并调用对应的方法更新选项列表。
阅读全文
相关推荐


















