Ant Design Cascader组件实现联级组件实现省市区联动

Ant Design Cascader 联级组件实现省市区联动

在这里插入图片描述
在这里插入图片描述

	<a-form ref="formRegister" :form="form" id="formRegister" >
        <a-form-item label="地址">
          <a-cascader size="large" :options="options" placeholder="请选择" @change="onChange" 
            v-decorator="[
                'addressValue',
                {
                  rules: [
                    {required: true, message: '地址不能为空'}
                  ],
                  initialValue: addressList.addressValue,
                }
            ]"
          />
          <a-input
            size="large"
            type="text"
            :max-length="100"
            placeholder="请输入详细地址"
            v-decorator="['address']"
          ></a-input>
        </a-form-item>
      </a-form>

回显地址:

	// 例:initialValue: ['河北省', '邯郸市', '邯山区']
	initialValue: addressList

options 数据格式

[
    {
        "label": "北京市",
        "value": "北京市",
        "children": [
            {
                "label": "北京市",
                "value": "北京市",
                "children": [
                    {
                        "label": "东城区",
                        "value": "东城区"
                    },
                    {
                        "label": "西城区",
                        "value": "西城区"
                    },
                    {
                        "label": "朝阳区",
                        "value": "朝阳区"
                    },
                    {
                        "label": "丰台区",
                        "value": "丰台区"
                    },
                    {
                        "label": "石景山区",
                        "value": "石景山区"
                    },
                    {
                        "label": "海淀区",
                        "value": "海淀区"
                    },
                    {
                        "label": "门头沟区",
                        "value": "门头沟区"
                    },
                    {
                        "label": "房山区",
                        "value": "房山区"
                    },
                    {
                        "label": "通州区",
                        "value": "通州区"
                    },
                    {
                        "label": "顺义区",
                        "value": "顺义区"
                    },
                    {
                        "label": "昌平区",
                        "value": "昌平区"
                    },
                    {
                        "label": "大兴区",
                        "value": "大兴区"
                    },
                    {
                        "label": "怀柔区",
                        "value": "怀柔区"
                    },
                    {
                        "label": "平谷区",
                        "value": "平谷区"
                    },
                    {
                        "label": "密云县",
                        "value": "密云县"
                    },
                    {
                        "label": "延庆县",
                        "value": "延庆县"
                    }
                ]
            }
        ]
    },
    ..........下面有json下载链接........

地址Json结构下载

使用

	data () {
      return {
        addressList: [],
        //options:导入下载好的json 格式
        options: options
      }
    }

json 格式符合Cascader 默认格式,以上代码即可完成联动

Vue.js应用中,结合Ant Design(简称AntD)库实现省市县三级联动下拉框通常会使用`<a-select>`组件以及数据驱动的方式来完成。下面是一个简化的示例代码: 首先,确保已安装VueAntD组件库,如果你还没有安装,可以使用npm或yarn添加依赖: ```bash npm install @vue/cli antd # 或者 yarn add @vue/cli antd ``` 然后,在`.vue`文件中创建一个组件,例如`CityDropdown.vue`: ```html <template> <div class="city-dropdown"> <a-select v-model="province" placeholder="请选择省份"> <a-option v-for="(item, index) in provinces" :key="index" :value="item.value">{{ item.label }}</a-option> </a-select> <a-select v-model="city" v-if="province" placeholder="请选择城市"> <a-option v-for="cityItem in cities" :key="cityItem.value" :value="cityItem.value">{{ cityItem.label }}</a-option> </a-select> <a-select v-model="district" v-if="city" placeholder="请选择区县"> <a-option v-for="districtItem in districts" :key="districtItem.value" :value="districtItem.value">{{ districtItem.label }}</a-option> </a-select> </div> </template> <script> import { Option, Select } from 'antd'; export default { components: { Option, Select, }, data() { return { province: '', city: '', district: '', provinces: [ { value: '01', label: '省份一' }, // ...其他省份数据 ], cities: [], // 这里需要通过province值动态加载城市数据 districts: [], // 类似地,这里需要通过city值动态加载区县数据 }; }, methods: { loadCities(provinceCode) { // 这里你可以从服务器获取省数据对应的城市列表,并更新cities数组 // 假设有个异步方法getCityList this.cities = this.getCityList(provinceCode); }, loadDistricts(cityCode) { // 同理,获取市数据对应区县的列表 this.districts = this.getDistrictList(cityCode); }, }, mounted() { this.loadCities(this.provinces[0].value); // 初始化加载第一个省份的城市 }, }; </script> <style scoped> .city-dropdown { margin-bottom: 1rem; } </style> ``` 在这个例子中,当用户选择省份时,`loadCities`方法会被调用并更新`cities`数组;同样,当选择城市时,`loadDistricts`方法会根据所选城市代码更新`districts`数组。 记得替换`getCityList`和`getDistrictList`为实际的数据获取逻辑,它们可以根据省份和城市的ID查询数据库或API服务。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值