需求:后台返回的数据,根据名称name查找路由访问的完整路径;后台像下面格式返回,前端可以直接用,后台也直接控制了前端路由;
后台返回数据示例:
1 var arr = [{ 2 name: '1',//一级菜单 3 path: '/1', 4 meta: { 5 title: '1' 6 }, 7 components: '1', 8 children: [{ 9 name: '11',//二级菜单10 path: '11',11 meta: {12 title: '11'13 },14 components: '11',15 }]16 }, {17 name: '2',//一级菜单18 path: '/2',19 meta: {20 title: '2'21 },22 components: '2',23 children: [{24 name: '21',//二级菜单25 path: '21',26 meta: {27 title: '21'28 },29 components: '21',30 children: [{31 name: '211',//三级菜单32 path: '211',33 meta: {34 title: '211'35 },36 components: '211',37 children: [{38 name: '2111',//四级菜单39 path: '2111',40 meta: {41 title: '2111'42 },43 components: '2111',44 }]45 }]46 }]47 }]例如:
菜单名为11的当前路径是11,页面跳转需要的完整路径是 /1/11
菜单名为2111的当前路径是2111,页面跳转需要的完整路径是 /2/21/211/2111
第一步:找到当前路径
function find(list){ let path = '' //要返回的完整路径 for(var i=0;i<list.length;i++){ if(list[i].meta.title==='2111'){//找到了就返回 path = list[i].path return path }else{//没找到去看子集里面是否有,没有就下一个循环 if(list[i].children){ var a = find(list[i].children) if(a){ path = a return path } } } }}find(arr) //返回 2111,只是菜单名为2111的当前路径
第二步:尝试把父组件路径和当前组件路径拼接起来
1 function find(list,fpath){// fpath为父组件路径 2 let path = '' //要返回的完整路径 3 for(var i=0;i<list.length;i++){ 4 if(list[i].meta.title==='2111'){//找到了就返回 5 //path = list[i].path 6 path = fpath + (fpath?'/':'') + list[i].path 7 return path 8 }else{//没找到去看子集里面是否有,没有就下一个循环 9 if(list[i].children){10 //var a = find(list[i].children)11 var a = find(list[i].children,list[i].path)//将当前组件的父组件的路径 list[i].path 传过去12 if(a){13 path = a14 return path15 }16 }17 }18 }19 }20 21 find(arr) //返回 211/2111 ,返回了父组件和当前组件拼接的路径
第三步:拼接所有祖先组件的路径,不管chilren嵌套多深,都能返回这一链路的完整路径
1 function find(list){ 2 let arr = Array.prototype.slice.call(arguments) 3 arr.shift()//得到传过来的所有祖先组件的路径 如菜单2111的祖先数据是[211,21,/2] 4 let path = '' //要返回的完整路径 5 for(let i=0;i<list.length;i++){ 6 if(list[i].meta.title==='2111'){/......原文转载:http://www.shaoqun.com/a/859390.html
跨境电商:https://www.ikjzd.com/
landing:https://www.ikjzd.com/w/2368
慧聪集团:https://www.ikjzd.com/w/1836
ensogo:https://www.ikjzd.com/w/1485
需求:后台返回的数据,根据名称name查找路由访问的完整路径;后台像下面格式返回,前端可以直接用,后台也直接控制了前端路由;后台返回数据示例:1vararr=[{2name:'1',//一级菜单3path:'/1',4meta:{5title:'1'6},7components:'1',8children:[{9name:'1
亚马逊收购交易获批 正式进军英国外卖市场!:https://www.ikjzd.com/articles/127258
FBA后端派送几近瘫痪?真实情况竟然是这样的……:https://www.ikjzd.com/articles/127261
2020年英国脱欧对已注册欧盟商标的权利人有什么影响:https://www.ikjzd.com/articles/127232
史上最难2020?大卖半年赚16亿!小卖也喜提豪车!:https://www.ikjzd.com/articles/127260
少妇口述:好色男邻居趁老公出差跟我一夜情:http://lady.shaoqun.com/a/70312.html
口述男朋友在车里㖭我下面 他的舌头弄得我欲仙欲死:http://lady.shaoqun.com/m/a/247531.html
女人坐在头上被㖭 他的舌头弄得我爽水好多:http://lady.shaoqun.com/m/a/248175.html
男人解开女人乳罩吃奶 在野外狠狠的挺进:http://lady.shaoqun.com/m/a/248410.html
为了表现,女朋友居然设计我陪客户一晚上:http://lady.shaoqun.com/a/410971.html
尼泊尔有材料│实际上是为了卖保险而和顾客睡觉:http://lady.shaoqun.com/a/410972.html
爱老公的女人为什么会出轨?三个女人表达她们内心的想法:http://lady.shaoqun.com/a/410973.html
杰夫·贝索斯卸任亚马逊CEO,新任CEO能否为卖家带来幸运?:https://www.ikjzd.com/articles/146504
没有评论:
发表评论