基于vue使用element定义一个三级联动省市级选择器

目录

 前言

一、效果展示

二、省市级选择器代码

1.引入中国省市区数据(含港澳台)

2.获取数据

3.代码展示

三、另外介绍vue-area-linkage组件

1.安装

2.使用

第一步:main.js中引用

第二步:调用组件

总结


 

 前言

开发中总是有各种用户数据的表单,就涉及到了用户的地址如省、市、区等,由于我在公司项目中也是遇到了这个需求,一般人都是直接网上找组件,毕竟数据省市区数据挺多的难以维护,所以本篇是使用element 来定义一个三级联动的选择器

一、效果展示

二、省市级选择器代码

1.引入中国省市区数据(含港澳台)

 npm install area-data --save

2.获取数据

// v5之前的版本
import AreaData from 'area-data';

// v5及之后的版本
import { pca, pcaa } from 'area-data';
// 可以根据需要按需引入:
import PCA from 'area-data/pca'; 
import PCAA from 'area-data/pcaa'; 

3.代码展示

<template>
  <el-form :model="form>
    <el-form-item label="三级联动选择器省市区:"">
        <el-select v-model="form.province" clearable placeholder="省" @change="seletekey($event, 'province')">
          <el-option v-for="(val, key) in provinces" :key="key" :label="val" :value="val" />
        </el-select>
        <el-select v-model="form.city" clearable placeholder="市" @change="seletekey($event, 'city')">
          <el-option v-for="(val, key) in citys" :key="key" :label="val" :value="val" />
        </el-select>
        <el-select v-model="form.area" clearable placeholder="区" @change="seletekey($event, 'area')">
          <el-option v-for="(val,key) in areas" :key="key" :label="val" :value="val" />
        </el-select>
    </el-form-item>
  </el-form>
</template>

<script>
//数据获取
import { pcaa } from 'area-data'
export default {
  data() {
    return {
      form: {},
      pcaaData: pcaa,
      // 区域数据
      provinces: pcaa['86'],
      citys: [],
      areas: []
    }
  },
  methods: {
    seletekey(e, type) {
      if (e) {
        switch (type) {
          case 'province':
            Object.keys(this.provinces).filter(item => {
              if (this.provinces[item] === e) {
                this.citys = this.pcaaData[item]
              }
            })
            break
          case 'city':
            Object.keys(this.citys).filter(item => {
              if (this.citys[item] === e) {
                this.areas = this.pcaaData[item]
              }
            })
            break
          case 'area':
            break
        }
      }
    }
  }
}
</script>

三、另外介绍vue-area-linkage组件

1.安装

// v5之前的版本
npm i --save vue-area-linkage

// v5及之后的版本
npm i --save vue-area-linkage area-data

2.使用

第一步:main.js中引用

import Vue from 'vue';
import { pca, pcaa } from 'area-data'; // v5 or higher
import 'vue-area-linkage/dist/index.css'; // v2 or higher
import VueAreaLinkage from 'vue-area-linkage';

Vue.use(VueAreaLinkage)

第二步:调用组件

<area-select v-model="selected" :data="pcaa"></area-select>

刚开始我是使用这个组件用起来非常的简单,不过里面有一个小问题就是如果在表单中已经选择好了省市区退出去再进来他在是存在数据,清除绑定的model数据都没用,所以我还是用element自己做一个符合自己需求的吧

组件详细使用说明vue-area-linkage

总结

时刻保持学习的热情,认真做好自己的事情!

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我可以帮你封装一个基于 Vue 2 和 Element UI 的地区联动选择器。 首先,你需要在你的项目中安装 VueElement UI。可以使用以下命令来安装它们: ```bash npm install vue@2.6.11 element-ui@2.15.3 ``` 接下来,你需要在你的 Vue 组件中引入并注册 Element UI 的组件。在你的组件中添加以下代码: ```vue <template> <div> <el-cascader v-model="selectedRegion" :options="regionOptions" :props="regionProps" @change="handleRegionChange" ></el-cascader> </div> </template> <script> import { Cascader } from 'element-ui'; export default { components: { 'el-cascader': Cascader, }, data() { return { selectedRegion: [], // 保存选择的地区 regionOptions: [ { value: 'province1', label: '省份1', children: [ { value: 'city1', label: '城市1', children: [ { value: 'district1', label: '区域1', }, { value: 'district2', label: '区域2', }, ], }, { value: 'city2', label: '城市2', children: [ { value: 'district3', label: '区域3', }, { value: 'district4', label: '区域4', }, ], }, ], }, // 可以继续添加更多的省份、城市和区域 ], regionProps: { value: 'value', label: 'label', children: 'children', }, }; }, methods: { handleRegionChange(value) { console.log('选择的地区:', value); }, }, }; </script> ``` 在这个例子中,我们使用Element UI 的 Cascader 组件来实现地区联动选择器。你可以根据实际需求修改 `regionOptions` 数组来配置省份、城市和区域的选项。 当用户选择地区时,`handleRegionChange` 方法会被触发,你可以在这个方法中处理选择的地区数据。 希望这个例子对你有帮助!如果你有任何问题,请随时提问。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值