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 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
Apr 01 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
详谈javascript异步编程
Feb 21 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
layui实现数据分页功能(ajax异步)
Jul 27 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python统计字符的个数代码实例
2020/02/07 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
音乐系毕业生自荐信
2013/10/27 职场文书
公务员职务工作的自我评价
2013/11/01 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
2014年档案室工作总结
2014/12/01 职场文书
安全员岗位职责范本
2015/04/11 职场文书
小学数学教学反思范文
2016/02/16 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
Nginx实现负载均衡的项目实践
2022/03/18 Servers