详解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 相关文章推荐
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
javascript自定义函数参数传递为字符串格式
Jul 29 Javascript
jquery移动节点实例
Jan 14 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
Jan 26 Javascript
js获取滚动距离的方法
May 30 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
jquery取消事件冒泡的三种方法(推荐)
May 28 Javascript
实例学习JavaScript读取和写入cookie
Jan 29 Javascript
jQuery length 和 size()区别总结
Apr 26 jQuery
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
Vue 技巧之控制父类的 slot
Feb 24 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
PHP无限分类(树形类)
2013/09/28 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
详解python Todo清单实战
2018/11/01 Python
python 构造三维全零数组的方法
2018/11/12 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
入党思想汇报
2014/01/05 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
公司2014年度工作总结
2014/12/10 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
Moment的feature导致线上bug解决分析
2022/09/23 Javascript