详解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 相关文章推荐
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
帮助避免错误的Javascript陷阱清单
May 31 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
jQuery滚动加载图片实现原理
Dec 14 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
jQuery表单验证插件解析(推荐)
Jul 21 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 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安全配置 如何配置使其更安全
2011/12/16 PHP
PHP进程同步代码实例
2015/02/12 PHP
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
Python判断字符串与大小写转换
2015/06/08 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Python实现汇率转换操作
2020/05/03 Python
Python学习之os模块及用法
2020/06/03 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
教育实习生的自我评价分享
2013/11/21 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
股东出资证明书范例
2014/10/04 职场文书
销售会议开幕词
2015/01/28 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
宇宙与人观后感
2015/06/05 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技