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 相关文章推荐
JavaScript高级程序设计 扩展--关于动态原型
Nov 09 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
javascript获得网页窗口实际大小的示例代码
Sep 21 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
深入理解Puppeteer的入门教程和实践
Mar 05 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
JavaScript中CreateTextFile函数
Aug 30 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中使用session防止用户非法登录后台的方法
2015/01/27 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
Vue头像处理方案小结
2018/07/26 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
Python连接DB2数据库
2016/08/27 Python
Python延时操作实现方法示例
2018/08/14 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
用Python 执行cmd命令
2020/12/18 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
护理毕业生自我鉴定
2014/02/11 职场文书
爱国主义演讲稿
2014/05/07 职场文书
师范生求职自荐信
2014/06/14 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
少年雷锋观后感
2015/06/10 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电