关于vue路由的问题

img

点击菜单,触发的是element-menu的路由,会将绑定的index作为路径来进行跳转。

目前有两个js文件,一个是记录所有路由的index.js,一个是记录菜单allTab.js。
前者决定每个路由路径对应的组件,后者决定侧边栏渲染的菜单。当点击菜单时,会转到路由中去匹配对应的组件进行渲染。

现在的问题是,菜单组件由分菜单+子菜单组成,因此allTab中记录格式为分菜单及其子菜单,譬如这样

export default {
    path: "/swManager", name: "swManager",
    meta: {title: '软件管理', role: 300, icon: 'management'},
    children: [
        {
            path: "maintenance",
            name: "AssetOnlineMaintain",
            meta: {
                title: "软件维护",
                icon: "Monitor",
                role: 328
            }
        }]
}

但是问题来了,路由内的导航都是平级的

    {
        path: "/swManager", name: "swManager",
        meta: {title: '软件管理', role: 300, icon: 'management'},
        //beforeEnter: (to, from) => {
        //    return false
        //},
    },{
        path: "/swManager/softDefine",
        name: "Asset", component: softDefine,
        meta: {
            title: "软件定义",
            icon: "discount",
            role: 304
        },
    },

因为如果同样采取一样的结构去存储的话,父组件这里就必须要有组件component,否则靠路由守卫直接给拒绝访问(但是如果拒绝的话,又无法跳转到它的子路由去了!)

我想要的是有什么方法,把路由这边的结构弄成和菜单栏allTab那样带父子分级的,因为后续分菜单也要渲染,从后台获取到权限数组后要根据结果加路由和对应菜单组件。如果数据结构一致的话就可以直接把路由转给菜单去渲染了。
或者说路由全部平级也可以,后台获取到权限数组后,要怎么去遍历全路由来生成新路由呢?
譬如数组是[1,300,301],是要这么写吗?双层for循环,这里的权限是对应菜单的权限,就是是否显示。

//routes:全路由; arr:权限数组;
for(let k in routes){
    for(let num in arr){
        if(arr[num] === routes[k].role) {
            this.newRoutes.push(routes[k])
            break
        }
    }
}

之后转成alltab的父子分级再想想办法怎么搞

vue的路由问题_lvpeng-web的博客-CSDN博客_vue 路径无法 页面始终在home页面 慕娘9325324路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容。Home按钮 => home 内容, about按钮 => about 内容,也可以说是一种映射. 所以在页面上有两个部分,一个是点击部分,一个是点击之后,显示内容的部分。点击之后,怎么做到正确的对应,比如,我... https://blog.csdn.net/weixin_41766191/article/details/90900101?ops_request_misc=&request_id=&biz_id=102&utm_term=vue%E8%B7%AF%E7%94%B1%E7%9A%84%E9%97%AE%E9%A2%98&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-90900101.142^v62^js_top,201^v3^control_1,213^v1^control&spm=1018.2226.3001.4449