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})}整个页面代码大致就是:
