element-ui casader组件动态加载的回显问题
最近在做项目的时候用到了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组件动态加载的回显问题的更多相关文章
- EasyUI的treegrid组件动态加载数据问题的解决办法
http://www.jquerycn.cn/a_3455 —————————————————————————————————————————————————————————————————————— ...
- React 性能优化之组件动态加载(react-loadable)
React 项目打包时,如果不进行异步组件的处理,那么所有页面所需要的 js 都在同一文件中(bundle.js),整个js文件很大,从而导致首屏加载时间过长. 所有,可以对组件进行异步加载处理,通常 ...
- 如何按需动态加载js文件
JavaScript无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大.这时候最好的做法就是按需引入,动态引入组件 ...
- Ext JS学习第十天 Ext基础之动态加载JS文件(补充)
此文用来记录学习笔记: •Ext4.x版本提供的一大亮点就是Ext.Loader这个类的动态加载机制!只要遵循路径规范,即可动态加载js文件,方便把自己扩展组件动态加载进来,并且减轻浏览器的压力. • ...
- Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单
动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...
- Vue + Element UI 实现权限管理系统(动态加载菜单)
动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...
- Element UI:级联选择器Cascader_动态加载_多级请求不同接口(已知第一级调取第二级)
ELEMENT UI_CASCADER 使用过饿了么级联动态加载的小伙伴应该都知道,lazyLoad本身是一个无差别返回渲染结点的函数. 当我们存在一个需求:已知级联选择器的第一级结点,现在需要通过第 ...
- NGUI学习笔记(四):动态加载UI和NGUI事件
动态加载UI 我们进入一个场景后,如果将这个场景所有可能用到的UI都直接放在场景中做好,由于要在进入场景时就部署好所有的UI对象,那么当UI对象较多时会碰到的问题是:1.初始化场景会产生非常明显的卡顿 ...
- QUiLoader 动态加载.ui文件
动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui 文件.不用 uic工具把.ui 文件变成等价的 c++代码,而是在程序运行过程中需要用到UI文件时,用 QUiLoader ...
- 详解QUiLoader 动态加载.ui文件
http://blog.chinaunix.net/uid-13838881-id-3652523.html 1.适用情况: 动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui ...
随机推荐
- python + unittest + request + parameterized 参数化遇到中文名称testcase不显示的问题
最近使用python+unittest+request+parameterized做接口测试,然后在利用parameterized做参数化时,发现测试用例的中文名称,感觉很奇怪,于是跟踪了parame ...
- JavaSE——构造方法
package com.zhao.test3; public class Student { private String name; private int age; //如果我们自己没有写任何的构 ...
- ps 合并两张图片为一张
打开PS并点击左上角的"文件":之后再点击"打开"(也可以按下快捷键"Ctrl+O"),打开文件选择窗口. 2 在打开的文件选择窗口中,找到 ...
- springmvc引入swagger2
swagger2 简介 API Developmentfor Everyone. Simplify API development for users, teams, and enterpri ...
- 接入GoogelAdmob C#服务器端验证 (SSV) 回调
记一次接入谷歌广告验证 官方文档:https://developers.google.cn/admob/android/rewarded-video-ssv 需要httpserver进行验证,项目里有 ...
- drools规则的入门使用
1:pom文件 <!--drools--><dependency> <groupId>org.drools</groupId> <artifact ...
- OS-lab4
OS-lab4 系统调用 系统调用的流程 按照上述的流程逐个分析. user/syscall_lib.c 这个文件位于user文件夹下,也就是用户程序可以调用的函数,相当于操作系统提供给用户程序的一些 ...
- home条 防止误碰
某些界面需要隐藏home条,防止误触导致页面返回 - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures { return UIRectEd ...
- 使用 WSDL 指定的标准 SOAP 消息格式
为 XML 文档(定义 Web 服务)定义架构的行业标准 Web 服务描述语言 (WSDL) 提供了两个主要的 SOAP 格式设置选项.这两个选项均在 XML 元素中指定,而不在主 WSDL 命名空间 ...
- 推荐2个可用于毕设的微信小程序
智能垃圾回收小程序 下载: http://market.zhenzikj.com/detail/103.html 2. 通用答题小程序 下载http://market.zhenzikj.com/det ...