当前位置: 首页 > Web前端 > CSS

Element中的Cascader(级联列表)动态加载省-市-区数据

时间:2023-03-31 13:00:13 CSS

element其实有动态加载二级选项的方法。该方法的原理是利用地址(引用)传递和动态修改:options。varc={name:'bob'}vard=cd.name='tom'console.log(c)//{name:"tom"}http://element-cn.eleme.io/#/...找出哪一层需要添加数据就成了一个很麻烦的问题。你是怎样找到它的?当然只能递归了。简化大意:vara=[{value:'2',children:[{value:'2-1',children:[{value:'2-1-1',children:[],},],},{值:'2-2',孩子:[{值:'2-2-1',孩子:[],},{值:'2-2-2',孩子:[{值:'2-2-2-1',孩子们:[],},],},],},],},]varb=['2','2-2','2-2-1']然后我们需要通过b找到a的位置。a[0].children[1].children[0]{value:'2-2-1',children:[],},然后赋值:a[0].children[1].children[0].children=[{value:'2-2-1-1',children:[]}]console.log(a)writefunction:findRegionOption(regionOptions,regionArr){if(_.isEmpty(regionArr)||_.isEmpty(regionOptions)){returnnull}letregionId=_.first(regionArr)letregionOption=_.find(regionOptions,regionOption=>{returnregionOption.value===regionId})if(!regionOption){返回null}lettailRegionArr=_.tail(regionArr)//Lodash的tail方法获取除了数组第一个元素之外的所有元素。if(_.isEmpty(tailRegionArr)){returnregionOption}returnthis.findRegionOption(regionOption.children,tailRegionArr)}动态加载数据:loadRegionChild(regionIdArr){letregionOptions=this.regionHieraletregionOptionInUI=this.findRegionOption(regionOptions,regionIdArr)if(!regionOptionInUI||!regionOptionInUI.children||regionOptionInUI.children.length>0){returnnull}letregionKey=_.last(regionIdArr)if(!regionKey){returnnull}api.getRegionHiera(regionKey)。then(res=>{regionOptionInUI.children=res.data})}整个页面代码大致就是:总体思路是点击后找到region,然后动态给children赋值。写的有点乱,希望对大家有帮助。PS:在其中使用的_.XXX引入的lodash库中再添加一个方法。如果后台返回的数据不符合组件的数据类型(children、label、value),可以使用该方法。/***格式化Region数据格式*@param[]*@return[]//返回清空监听方法*/functiontransRegion(regionInfo){if(!regionInfo){returnnull;}让regionId=regionInfo.regionId;让regionName=regionInfo.name;让children=_.map(regionInfo.children,child=>{returntransRegion(child);});varres={标签:区域名称,值:区域ID,儿童:儿童};返回资源;}

最新推荐
猜你喜欢