最近在做项目的时候用到了element-ui的cascader来做省市区的级联显示 我要做的需求就是在选择某个省的时候,再去加载省下面的所有市,在实现这个需求的过程中遇到了二级菜单不能反显的情况.以下是解决问题的方法,页欢迎各位大佬指正

首先简单介绍一下cascader的一些属性

value:对应省市的code值

label:对应省市的名字

leaf:是否是叶子节点,是叶子节点就不会继续加载下一面板,所以需要在请求市的时候添加

这里就是在请求第三个面板的时候,加了leaf:level>=2,当level>=2时为true,就说明这是最后一个cascader面板

  <el-cascader :props="props"></el-cascader>
<script>
let id = 0;
export default {
data() {
return {
props: {
lazy: true, //是否动态加载子节点,需与 lazyLoad 方法结合使用
lazyLoad (node, resolve) {
const { level } = node;
setTimeout(() => {
const nodes = Array.from({ length: level + 1 })
.map(item => ({
value: ++id,
label: `选项${id}`,
leaf: level >= 2
}));
// 通过调用resolve将子节点数据返回,通知组件数据加载完成
resolve(nodes);
}, 1000);
}
}
};
}
};
</script>

组件在初始化的时候就会执行lazyLoad,先加载所有的面板,所以数据的初始化要全部都放在lazyLoad里面,以下是代码

<el-cascader
:props = handleProps
v-model='address'
@change="handleChange"
separator="-"
></el-cascader> handleProps:{ //应该写在data里面的,我直接给拿出来了,初始化和鼠标点击的时候都会执行
lazy:true,
lazyLoad:(node,resolve)=>{ //在没有遇到leaf:true的时候就会一直执行
var provinceData
var cityData
if(!node.value){ // 初始化,没有点击省市的时候的赋值,数据的反显!!!
this.address = await this.$parent.handleArray() //从父组件传来的值
}
if(node.level==0){
this.$http('getProvince', params, 'post').then(res=>{
//只有在node.level为0的时候加载省数据,level是面板的排序,从0开始
if(res.code=="0000"){ //还有params我是直接省略了,不影响大家阅读的哈
provinceData =res.data.map(ele=>({
value:ele.code,
label:ele.name,
leaf:level>=1
}))
resolve(provinceData)
}
}).catch(err=>{
console.log(err,"====>获取省");
})
}
else if(node.level==1){
this.$http('getDict', params, 'post').then(res=>{
if(res.code=="0000"){
cityData =res.data.map(ele=>({
value:ele.code,
label:ele.name,
leaf:level>=1 //叶子节点,不会有下一层级了
}))
resolve(cityData)
this.cityObj[value] = this.cityData // 选择重复的选项,叶子节点不会再去请求,此时的cityData是一个[],因此可以将请求过的数据保存下来,
}
}).catch(err=>{
console.log(err,'获取市'); })
}
}
}

但是这个方法只能是在初始化的时候,进行数据的返显,当我改变用户的时候,省市没有发生变化,lazyload只能执行一次,所以借鉴了网上的方法,使用v-if进行组件的销毁与重建,迫使lazyload执行一次,注意这里的赋值和组件的显示放再定时器或者nextTick中

element-ui casader组件动态加载的回显问题的更多相关文章

  1. EasyUI的treegrid组件动态加载数据问题的解决办法

    http://www.jquerycn.cn/a_3455 —————————————————————————————————————————————————————————————————————— ...

  2. React 性能优化之组件动态加载(react-loadable)

    React 项目打包时,如果不进行异步组件的处理,那么所有页面所需要的 js 都在同一文件中(bundle.js),整个js文件很大,从而导致首屏加载时间过长. 所有,可以对组件进行异步加载处理,通常 ...

  3. 如何按需动态加载js文件

    JavaScript无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大.这时候最好的做法就是按需引入,动态引入组件 ...

  4. Ext JS学习第十天 Ext基础之动态加载JS文件(补充)

    此文用来记录学习笔记: •Ext4.x版本提供的一大亮点就是Ext.Loader这个类的动态加载机制!只要遵循路径规范,即可动态加载js文件,方便把自己扩展组件动态加载进来,并且减轻浏览器的压力. • ...

  5. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  6. Vue + Element UI 实现权限管理系统(动态加载菜单)

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  7. Element UI:级联选择器Cascader_动态加载_多级请求不同接口(已知第一级调取第二级)

    ELEMENT UI_CASCADER 使用过饿了么级联动态加载的小伙伴应该都知道,lazyLoad本身是一个无差别返回渲染结点的函数. 当我们存在一个需求:已知级联选择器的第一级结点,现在需要通过第 ...

  8. NGUI学习笔记(四):动态加载UI和NGUI事件

    动态加载UI 我们进入一个场景后,如果将这个场景所有可能用到的UI都直接放在场景中做好,由于要在进入场景时就部署好所有的UI对象,那么当UI对象较多时会碰到的问题是:1.初始化场景会产生非常明显的卡顿 ...

  9. QUiLoader 动态加载.ui文件

    动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui 文件.不用 uic工具把.ui 文件变成等价的 c++代码,而是在程序运行过程中需要用到UI文件时,用 QUiLoader ...

  10. 详解QUiLoader 动态加载.ui文件

    http://blog.chinaunix.net/uid-13838881-id-3652523.html 1.适用情况: 动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui ...

随机推荐

  1. 二叉树TwT

    L2-011 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. ...

  2. john破解linux用户密码

    John是kali-linux自带的密码破解工具,支持密码本破解.Linux的系统账户在/etc/passwd中,密码存于/etc/shadow中. 以下操作为例: (1)创建一个账户,

  3. secret或configmap对象key名称带点,env命令不显示分析

    分享一个最近在排查的问题: k8s的 secret 或 configmap 对象,如果 key 名称是带[.]的,比如[a.b.c .db.host]这种名称,注入到POD后,使用env等命令查看不到 ...

  4. Winform 在高分变率显示器中窗体变模糊配置方式

    我们知道  Winform 前身与 XP 系统 同一时代出生 , 那时候显示器还是LCD 和 大头机 ,显示器普遍  96 DPI  . 随着显示器质量改善,2K 屏, 4K屏普及,DPI 达  19 ...

  5. 性能再升级,XMeter Cloud 专业版正式上线

    去年 8 月,EMQ 正式在全球市场推出了最简单.快速的 MQTT 负载和场景测试云服务--XMeter Cloud,用户无需部署即可进行 MQTT 测试,以更低的测试成本轻松打造具有竞争力的可靠物联 ...

  6. Android移动端性能测试工具mobileperf

    简介:mobileperf是阿里开源的一个python PC 工具,可以收集Android性能数据: cpu.内存.流畅度.fps.logcat日志.流量.进程线程数.进程启动日志,mobileper ...

  7. 将pb模型参数提取转成torch模型

    1 import tensorflow as tf 2 import onnx 3 import onnxsim 4 import numpy as np 5 import torch 6 from ...

  8. STP协议-基础

    生成树协议 一 .技术背景一个缺乏冗余性设计的网络:任何一个网络节点出现故障,会造成单链路故障.单设备故障,使整个网络瘫痪. 引入冗余性的同时也引入了二层环路:网络的冗余性增强了,但是却出现了二层环路 ...

  9. pandas通过sqlalchemy写入pgsql报错can't adapt type 'numpy.int64'

    其实以前也遇到过,后来不了了之,但今天又出现了,还是大概记录下. 我个人习惯按我自己的理解搞事情,只要结果对就行,但不一定对. 分析下原因,突然想到dataframe中有一列全是列表,列表中全是整数, ...

  10. Linux 常用监控指标总结

    1. Linux运维基础采集项 做运维,不怕出问题,怕的是出了问题,抓不到现场,两眼摸黑.所以,依靠强大的监控系统,收集尽可能多的指标,意义重大.但哪些指标才是有意义的呢,本着从实践中来的思想,各位工 ...