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 相关文章推荐
js实现运行代码需要刷新的解决方法
Aug 18 Javascript
JQUERY操作JSON实例代码
Feb 09 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
Aug 17 Javascript
jQuery表格插件datatables用法详解
Nov 23 Javascript
jQuery代码实现实时获取时间
Jan 29 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 Javascript
Angular实现表单验证功能
Nov 13 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
详解Vue中的基本语法和常用指令
Jul 23 Javascript
封装 axios+promise通用请求函数操作
Aug 11 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
jQuery解析Json实例详解
2015/11/24 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python爬虫增加访问量的方法
2019/08/22 Python
python使用配置文件过程详解
2019/12/28 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python运行异常管理解决方案
2020/03/09 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
测试工程师岗位职责
2013/11/28 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书