Vue路由器未遵循子路径

时间:2018-09-18 14:21:24

标签: vue.js vue-router

我在加载http://localhost:8080/myapps/config路由时遇到问题。如果我使用http://localhost:8080/myapps,一切正常,我会得到我的应用程序列表。但是,当我想通过http://localhost:8080/myapps/config访问应用程序配置时,它将再次加载/ myapps的内容。但是,我的浏览器中的网址显示了正确的路径/ myapps / config。

我已经检查了数个小时的路由,但是一切似乎都还不错。有人可以照亮吗?

我的路由器文件:

import Vue from 'vue'
import Router from 'vue-router'

const MyApps = () => import('../views/app/subviews/MyApps');
const AppKeyValue = () => import('../views/app/subviews/AppKeyValue');

import MainView from '../views/app/MainView'

Vue.use(Router)

export default new Router({
    mode: 'history',
    routes: 
    [
        {
            path: '/',
            component: MainView,
            redirect: 'myapps',
            children: 
            [
                {
                    path: 'myapps',
                    component: MyApps,
                    meta: 
                    {
                        requiresAuth: true,
                        breadcrumb: 'My Apps'
                    },
                    children:
                    [
                        {
                            path: 'config',
                            component: AppKeyValue,
                            meta: 
                            {
                                requiresAuth: true,
                                breadcrumb: 'App configuration'
                            }
                        },
                    ]

                },
            ]
        },
    ]
})

如果我不使用子路由,一切正常:

export default new Router({
    mode: 'history',
    routes:
    [
        {
            path: '/',
            component: MainView,
            redirect: 'myapps',
            children: 
            [
                {
                    path: 'myapps',
                    component: MyApps,
                    meta: 
                    {
                        requiresAuth: true,
                        title: 'message.ecommerce',
                        breadcrumb: 'My Apps'
                    },
                },
                {
                    path: 'myapps/config',
                    component: AppKeyValue,
                    meta: 
                    {
                        requiresAuth: true,
                        title: 'message.ecommerce',
                        breadcrumb: 'App configuration'
                    }
                }
           ]
     }
]}

1 个答案:

答案 0 :(得分:3)

您没有发布*.vue组件,但我认为您在第二级组件中缺少<router-view>

示例:

MainView被映射到/并具有1个子路由(/myapps)。您可能在<router-view>中使用了MainView

MyApps作为myapps路由的子级映射到/,并具有1个子路由(/config)。

在您的<router-view中添加一个MyApps.vue,以显示其子项(在您的情况下,该子项仅为/config)。

  

类似地,渲染的组件也可以包含其自己的嵌套<router-view>

https://router.vuejs.org/guide/essentials/nested-routes.html#nested-routes

顺便说一句:这也是您第二个路由器配置正常运行的原因:主路由有两个子节点(/myapps/myapps/config),这两个子节点都由MainView的{​​{ 1}}。

这是文档中的一个有效示例:

https://jsfiddle.net/nazgul_mamasheva/zrcLe9z7/1/