详解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 相关文章推荐
浅析hasOwnProperty方法的应用
Nov 20 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
Nov 22 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
Mar 20 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
Angular简单验证功能示例
Dec 22 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
微信小程序实现图片上传
May 23 Javascript
express中static中间件的具体使用方法
Oct 17 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读取csv文件并输出的方法
2015/03/14 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python的词法分析与语法分析
2013/05/18 Python
python保存字符串到文件的方法
2015/07/01 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
初中美术教学反思
2016/02/17 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫