vue + elementUI实现省市县三级联动的方法示例


Posted in Javascript onOctober 29, 2019

本文介绍了vue + elementUI实现省市县三级联动的方法示例,分享给大家,具体如下:

 vue + elementUI实现省市县三级联动的方法示例

1、首先需要准备省市县json文件,网上有很多可以下载。项目中使用的city.json数据是这样的格式:

[
 {
  "value": "110000",
  "label": "北京市",
  "children": [
   {
    "value": "110000",
    "label": "北京市",
    "children": [
     {
      "value": "110101",
      "label": "东城区"
     },
     {
      "value": "110102",
      "label": "西城区"
     },
     {
      "value": "110105",
      "label": "朝阳区"
     },
     {
      "value": "110106",
      "label": "丰台区"
     },
     {
      "value": "110107",
      "label": "石景山区"
     },
     {
      "value": "110108",
      "label": "海淀区"
     },
     {
      "value": "110109",
      "label": "门头沟区"
     },
     {
      "value": "110111",
      "label": "房山区"
     },
     {
      "value": "110112",
      "label": "通州区"
     },
     {
      "value": "110113",
      "label": "顺义区"
     },
     {
      "value": "110114",
      "label": "昌平区"
     },
     {
      "value": "110115",
      "label": "大兴区"
     },
     {
      "value": "110116",
      "label": "怀柔区"
     },
     {
      "value": "110117",
      "label": "平谷区"
     },
     {
      "value": "110118",
      "label": "密云区"
     },
     {
      "value": "110119",
      "label": "延庆区"
     }
    ]
   }
  ]
 },
 {
  "value": "120000",
  "label": "天津市",
  "children": [
   {
    "value": "120000",
    "label": "天津市",
    "children": [
     {
      "value": "120101",
      "label": "和平区"
     },
     ......

2、创建一个组件开始写代码

<template>
 <div class="linkage">
  <div>
   <el-select v-model="selectProvince" filterable size="small" @change="selectProvinceFun($event)" placeholder="请选择省份">
    <el-option value="" label="请选择省份"></el-option>
    <el-option :value="item" :label="item.label" v-for="(item, index) in city" :key="index"></el-option>
   </el-select>
  </div>
  <div>
   <el-select v-model="selectCity" filterable size="small" @change="selectCityFun($event)" placeholder="请选择城市">
    <el-option value="" label="请选择城市"></el-option>
    <el-option :value="item" :label="item.label" v-for="(item, index) in cityList" :key="index"></el-option>
   </el-select>
  </div>
  <div>
   <el-select v-model="selectArea" filterable size="small" @change="selectAreaFun($event)" placeholder="请选择区县">
    <el-option value="" label="请选择区县"></el-option>
    <el-option :value="item" :label="item.label" v-for="(item, index) in areaList" :key="index"></el-option>
   </el-select>
  </div>
 </div>
</template>
<script>
import city from '@/assets/json/city.json'
export default {
 name: 'linkage',
 data () {
  return {
   // 整个省市县数据
   city: city,
   // 被选中的市数据
   cityList: [],
   // 被选中的县数据
   areaList: [],
   selectProvince: {},
   selectCity: {},
   selectArea: {}
  }
 },
 mounted () {
 },
 methods: {
  // 省份 市 县联动
  selectProvinceFun (event) {
   console.log(event)
   if (event) {
    this.cityList = event.children
   } else {
    this.cityList = []
   }
   this.areaList = []
   this.$emit('getLawyerListInfo', [event.label, 'province'])
  },
  selectCityFun (event) {
   console.log(event)
   if (event) {
    this.areaList = event.children
   } else {
    this.areaList = []
   }
   this.$emit('getLawyerListInfo', [event.label, 'city'])
  },
  selectAreaFun (event) {
   console.log(event)
   this.$emit('getLawyerListInfo', [event.label, 'area'])
  }
 }
}
</script>
<style lang="scss" scoped>
 .linkage {
  display: flex;
  div {
   margin-right: 5px;
  }
 }
</style>

总结:整个过程很简单,就是在选中省的时候获取他的所有children节点数据(市)在选择市的时候获取她的所有children节点数据(区县)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
range 标准化之获取
Aug 28 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
Sep 26 Javascript
javascript基本语法
May 31 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
详解Python中logging日志模块在多进程环境下的使用
Dec 26 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
uni-app如何实现增量更新功能
Jan 03 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 #Javascript
javascript实现简单打字游戏
Oct 29 #Javascript
简单使用webpack打包文件的实现
Oct 29 #Javascript
vue 解决异步数据更新问题
Oct 29 #Javascript
VUE实现强制渲染,强制更新
Oct 29 #Javascript
js实现贪吃蛇小游戏
Oct 29 #Javascript
浅谈vue异步数据影响页面渲染
Oct 29 #Javascript
You might like
解析php时间戳与日期的转换
2013/06/06 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
php Calender(日历)代码分享
2014/01/03 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
JavaScript库 开发规则
2009/01/31 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
基于Django用户认证系统详解
2018/02/21 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
通过Pandas读取大文件的实例
2018/06/07 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Python 中@property的用法详解
2020/01/15 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
小区物业门卫岗位职责
2014/04/10 职场文书
老人节标语大全
2014/10/08 职场文书
小学生作文批改评语
2014/12/25 职场文书
高中社区服务活动报告
2015/02/05 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
庆七一晚会主持词
2015/06/30 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
使用Python解决图表与画布的间距问题
2022/04/11 Python
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL