详解element-ui级联菜单(城市三级联动菜单)和回显问题


Posted in Javascript onOctober 02, 2019

代码最下面

详解element-ui级联菜单(城市三级联动菜单)和回显问题

各项的参数截图

详解element-ui级联菜单(城市三级联动菜单)和回显问题

详解element-ui级联菜单(城市三级联动菜单)和回显问题

详解element-ui级联菜单(城市三级联动菜单)和回显问题

详解element-ui级联菜单(城市三级联动菜单)和回显问题

详解element-ui级联菜单(城市三级联动菜单)和回显问题

代码如下

<el-form-item label="户籍所在地" prop="censusLand" style="padding-left:57px">
 <el-cascader
  v-model="ruleForm.censusLand"
  style="width:180px;padding-left:7px;width:270px"
  placeholder="请选择省市区"
  :options="cascaderData1"
  @expand-change="censusLandChange"
  :props="{
  value: 'id',
  label: 'name',
  children: 'cities'
  }"
 ></el-cascader>
 </el-form-item>
data (){
 retutn {
  ruleForm: {
   censusLand // 双向绑定
  },
  cascaderData1: [], // 户籍省 一级菜单
 }
}
// 户籍所在地-选中后下一级
censusLandChange(val) {
 this.getCensusLand(val);
},
// 户籍所在地
getCensusLand(val) {
 // console.log(val);
 let idArea;
 let sizeArea;
 if (!val) {
 idArea = null;
 sizeArea = 0;
 } else if (val.length === 1) {
 idArea = val[0];
 sizeArea = val.length; // 3:一级 4:二级 6:三级
 } else if (val.length === 2) {
 idArea = val[1];
 sizeArea = val.length; // 3:一级 4:二级 6:三级
 }

 this.$get(
 "/stu/student/getAreaId",
 {
  AreaId: idArea
 },
 res => {
  // console.log("1111",res);
  if (sizeArea === 1) {
  // 点击一级 加载二级 市
  this.cascaderData1.map((value, i) => {
   if (value.id === val[0]) {
   if (!value.cities.length) {
    value.cities = res.data.map((value, i) => {
    return {
     id: value.id,
     name: value.name,
     cities: []
    };
    });
   }
   }
  });
  } else if (sizeArea === 2) {
  // 点击二级 加载三级 区
  this.cascaderData1.map((value, i) => {
   if (value.id === val[0]) {
   value.cities.map((value, i) => {
    if (value.id === val[1]) {
    if (!value.cities.length) {
     value.cities = res.data.map((value, i) => {
     return {
      id: value.id,
      name: value.name
     };
     });
    }
    }
   });
   }
  });
  }
  // console.log(this.ruleForm.censusLand);
 },
 err => {}
 );
},

回显时,注意要同步(通过new Promise)

this.getAllMe(); // 先获取一级的城市
// 在回显数据的res 里放入这段代码(视情况而定)
// 需要先加载市级菜单,再去加载省级的()
 // 户口所在地
 new Promise((resolve, reject) => {
 let val = [res.data.getupdate.domicileProvinceId];
 let idArea;
 let sizeArea;
 if (!val) {
  idArea = null;
  sizeArea = 0;
 } else if (val.length === 1) {
  idArea = val[0];
  sizeArea = val.length; // 3:一级 4:二级 6:三级
 }
 this.$get(
  "/stu/student/getAreaId",
  {
  AreaId: idArea
  },
  res => {
  // console.log("1111", res);

  if (sizeArea === 1) {
   // 点击一级 加载二级 市
   this.cascaderData1.map((value, i) => {
   if (value.id === val[0]) {
    if (!value.cities.length) {
    value.cities = res.data.map((value, i) => {
     return {
     id: value.id,
     name: value.name,
     cities: []
     };
    });
    }
   }
   });
  }
  resolve(res);
  },
  err => {
  reject(err);
  }
 );
 })
 .then(data => {
 // 通过他们去获取第三级的
  this.getCensusLand([
  res.data.getupdate.domicileProvinceId, // 一级
  res.data.getupdate.domicileCityId // 二级
  ]); // 户口所在地
 })
 .catch(err => {
  console.log(err);
 });

最后再双向绑定给censusLand

// 户籍
censusLand: [
 res.data.getupdate.domicileProvinceId * 1,
 res.data.getupdate.domicileCityId * 1,
 res.data.getupdate.domicileDistrictId * 1
],

大概就这些了,希望对大家有帮助。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
pjblog修改技巧汇总
Mar 12 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
May 08 Javascript
JavaScript中使用concat()方法拼接字符串的教程
Jun 06 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
AngularJs分页插件使用详解
Jun 30 Javascript
详解angular2.x创建项目入门指令
Oct 11 Javascript
详解小程序rich-text对富文本支持方案
Nov 28 Javascript
layui 中select下拉change事件失效的解决方法
Sep 20 Javascript
解决Vue-cli无法编译es6的问题
Oct 30 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 #Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 #Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 #Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 #Javascript
javascript实现摄像头拍照预览
Sep 30 #Javascript
java和js实现的洗牌小程序
Sep 30 #Javascript
JS使用H5实现图片预览功能
Sep 30 #Javascript
You might like
GD输出汉字的函数的分析
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
在Python中使用dict和set方法的教程
2015/04/27 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
opencv+python实现均值滤波
2020/02/19 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
中学运动会广播稿
2014/01/19 职场文书
学年末自我鉴定
2014/01/21 职场文书
民政局个人整改措施
2014/09/24 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang