详解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统计页面的来访次数实现代码
May 09 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
jQuery设置和获取HTML、文本和值示例
Jul 08 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
prototype.js常用函数详解
Jun 18 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
node.js爬虫爬取拉勾网职位信息
Mar 14 Javascript
js动态引入的四种方法
May 05 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
vue.js实现只能输入数字的输入框
Oct 19 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获取服务器时间的实现代码
2013/06/07 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
利用Python开发微信支付的注意事项
2016/08/19 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
keras K.function获取某层的输出操作
2020/06/29 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
软件测试题目
2013/02/27 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
团组织关系介绍信
2014/01/12 职场文书
2015年读书月活动总结
2015/03/26 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
详解python的内存分配机制
2021/05/10 Python