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 相关文章推荐
让innerHTML的脚本也可以运行起来
Jul 01 Javascript
javascript 通用简单的table选项卡实现
May 07 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
AngularJS中的API(接口)简单实现
Jul 28 Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
JS计算斐波拉切代码实例
Sep 12 Javascript
微信小程序绘制半圆(弧形)进度条
Nov 18 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
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
Python抓取百度查询结果的方法
2015/07/08 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
使用python爬取B站千万级数据
2018/06/08 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
公务员培训自我鉴定
2013/09/19 职场文书
中职生自我鉴定范文
2013/10/03 职场文书
有针对性的求职自荐信
2013/11/14 职场文书
励志演讲稿300字
2014/08/21 职场文书
学习考察心得体会
2014/09/04 职场文书
催款通知书范文
2015/04/17 职场文书
道歉的话怎么说
2015/05/12 职场文书
校园广播站开场白
2015/06/01 职场文书
安全责任协议书范本
2016/03/23 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python