详解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 new一个对象的实质
Jan 07 Javascript
js下写一个事件队列操作函数
Jul 19 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
javascript:void(0)的作用示例介绍
Oct 28 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
JavaScript的代码编写格式规范指南
Dec 07 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
深入了解Vue动态组件和异步组件
Jan 26 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
php cookie工作原理与实例详解
2016/07/18 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python实现自动重启本程序的方法
2015/07/09 Python
使用Python对Access读写操作
2017/03/30 Python
详解django.contirb.auth-认证
2018/07/16 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
质量保证书
2015/01/17 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python