iview级联选择器数据量较大时渲染卡顿问题的解决

iview级联选择器数据量较⼤时渲染卡顿问题的解决
问题还原:在抽屉中加载多个级联选择器造成页⾯渲染卡顿。产品要求级联选择器可以选择任意⼀级。
解决思路:iview提供了load-data属性异步加载⼦选项。 设置属性 change-on-select 点任何⼀级都可以选择。
产⽣的新问题:设置属性change-on-select为true时,在编辑页⾯时只会回显第⼀级。
解决思路:为级联选择器注册 on-visible-change事件,展开和关闭弹框时触发,展开时设置 this.ischangeOnSelect为true。
<Cascader
:data="areaList"
placeholder="请选择地区"
:load-data="loadData"
@on-change="changeCas"
ugcam
@on-visible-change='handleVisibleChange'
v-model="addresData"
changeOnSelect='true'
></Cascader>
对绑定的数据进⾏处理, 给数据增加 loading 来标识当前是否在加载中
getAreaList(){
//获取省市区
getAreaList().then(res =>{
this.areaList =[];
if(res.success){
婴幼儿营养与保健
sult && sult.length){
this.areaList = sult.map(item =>{
return{
value: item.value,
label: item.label,
children:[],
loading:false,
data: item.children
}
})
教育与社会的关系}
}
});
},
为级联选择器注册 on-visible-change事件
handleVisibleChange(val){
this.ischangeOnSelect = val;
},
load-data 的第⼆个参数为回调,如果执⾏,则会⾃动展开当前项的⼦列表。判断this.ischangeOnSelect是否为true,即判断级联选择器的下拉框是否为展开的,如果是展开的就执⾏回调函数,⾃动展开当前项的⼦列表,否则就不执⾏回调
loadData(item, callback){
item.loading =true;
this.$nextTick(()=>{
item.children = item.data.map(dataItem =>{ if(dataItem.children.length ==0){
return{
value: dataItem.value,
label: dataItem.label
}
}else{
return{
value: dataItem.value,
label: dataItem.label,一面五星红旗教学设计
loading:false,
children:[],
data: dataItem.children
}
}
});
item.loading =false;
if(this.ischangeOnSelect){
callback();
}
墨白不起眼的一颗星})
},
远华案件

本文发布于:2024-09-22 04:06:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/396788.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:级联   选择器   展开   数据   加载
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议