详解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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
关于JavaScript的with 语句的使用方法
May 09 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
微信小程序tabBar用法实例详解
Dec 04 Javascript
JS运动改变单物体透明度的方法分析
Jan 23 Javascript
微信小程序实现的日期午别医生排班表功能示例
Jan 09 Javascript
js module大战
Apr 19 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
JS forEach跳出循环2种实现方法
Jun 24 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
基于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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php记录日志的实现代码
2011/08/08 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
php合并js请求的例子
2013/11/01 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
深入了解js原型模式
2019/05/30 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python内置函数OCT详解
2016/11/09 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
如何利用python生成MD5并去重
2020/12/07 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
特色冷饮店创业计划书
2014/01/28 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
教导主任个人总结
2015/03/03 职场文书
小学主题班会教案
2015/08/17 职场文书
总经理聘用协议书
2015/09/21 职场文书