详解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 相关文章推荐
利用javascript移动div层-javascript 拖动层
Mar 22 Javascript
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
js 函数调用模式小结
Dec 26 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
javascript操纵OGNL标签示例代码
Jun 16 Javascript
javascript封装的sqlite操作类实例
Jul 17 Javascript
在点击div中的p时,如何阻止事件冒泡
Feb 07 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 Javascript
JavaScript如何实现图片处理与合成
May 29 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 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 ftp文件上传函数(基础版)
2010/06/03 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
详解如何在angular2中获取节点
2017/11/23 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
机器学习python实战之决策树
2017/11/01 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
英国女士家居服网站:hush
2017/08/09 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
物流管理毕业生自荐信范文
2014/03/15 职场文书
明信片寄语大全
2014/04/08 职场文书
婚庆公司计划书
2014/09/15 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
公司感谢信范文
2015/01/22 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis