记vue多级目录一次教训

问题描述:实现3级或多于3级目录时,无法成功加载指定的页面组件,页面path,component等都设置正确
原始创建动态路由代码如下:

function buildRouters(routers, menutree) {
  if (!menutree) {
    return
  }
  menutree.forEach(function(item) {
    let routerItem = {}
    if (!item.parent) {
      。。。。。。
    } else {
      // @A 
      routerItem.path = item.url
      let cnt = item.component
      routerItem.component = () => import(`@/views/${cnt}`)
    }
    routerItem.name = item.code
    routerItem.meta = { 'title': item.name, 'icon': item.icon }
    if (item.active_menu) {
      routerItem.meta.activeMenu = item.active_menu
    }
    routerItem.hidden = item.hidden || false
    routerItem.alwaysShow = false
    if (!routerItem.children) {
      routerItem.children = []
    }
    routers.push(routerItem)
    buildRouters(routerItem.children, item.children)
  })
}

经过分析,是在//@A地方出问题,此处会根据配置加载component,此时如果component没有设置时,则会出现记载不出,所以//@A需改成如下代码

     // @A 
	 routerItem.path = item.tag.url
      if (item.tag.component) {
        const cnt = item.tag.component
        routerItem.component = () => import(`@/views/${cnt}`)
      } else {
      	// SubLayout是一个子布局组件,一般情况是Layout中的一部分
        routerItem.component = SubLayout
      }

粗心浪费了一晚时间,哎…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值