详解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 相关文章推荐
计算世界完全对称日的js代码,粗糙版
Nov 04 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
使用js实现关闭js弹出层的窗口
Feb 10 Javascript
100个不能错过的实用JS自定义函数
Mar 05 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
jQuery的事件委托实例分析
Jul 15 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
Vue实现开关按钮拖拽效果
Sep 22 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
PHP一些有意思的小区别
2006/12/06 PHP
PHP函数utf8转gb2312编码
2006/12/21 PHP
两个php日期控制类实例
2014/12/09 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
2016/11/09 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
vue.js的安装方法
2017/05/12 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
python向图片里添加文字
2019/11/26 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
资产评估专业学生的自我鉴定
2013/11/14 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
初中学校对照检查材料
2014/08/19 职场文书
合同审查法律意见书
2015/06/04 职场文书
小平您好观后感
2015/06/09 职场文书
文艺节目主持词
2015/07/06 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang