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 相关文章推荐
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
js作用域及作用域链概念理解及使用
Apr 15 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
使用JavaScript+canvas实现图片裁剪
Jan 30 Javascript
JavaScript中setMonth()方法的使用详解
Jun 11 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
angular+webpack2实战例子
May 23 Javascript
深入Vue-Router路由嵌套理解
Aug 13 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
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
Laravel学习教程之request validation的编写
2017/10/25 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
python发送邮件实例分享
2017/07/28 Python
python里dict变成list实例方法
2019/06/26 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
python如何将图片转换素描画
2020/09/08 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
关于Python错误重试方法总结
2021/01/03 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
会计专业自我鉴定范文
2013/12/29 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
爬山的活动方案
2014/08/16 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
初中教师个人总结
2015/02/10 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
大学生见习总结报告
2015/06/24 职场文书
生产实习心得体会范文
2016/01/22 职场文书
教你用python控制安卓手机
2021/05/13 Python
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android