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功能函数(2009-06-04更新)
Jun 04 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
Sep 15 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
Jan 21 Javascript
Vue中fragment.js使用方法详解
Mar 09 Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 Javascript
JS获取子、父、兄节点方法小结
Aug 14 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
桌面中心(四)数据显示
2006/10/09 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
益达广告词
2014/03/14 职场文书
降消项目实施方案
2014/03/30 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
python xlwt模块的使用解析
2021/04/13 Python