子路由不能用空的路由路径

子路由不能用空的路由路径

问题描述:

我想创建一个路由到用户的配置文件页面,它必须是“/:username”,但它不起作用。它在最后一行描述。看起来,儿童路线不适用于路径空旷的父母。子路由不能用空的路由路径

app.js

configureRouter(config, router){ 
     config.title = 'Dreampper'; 
     //config.options.pushState = true; 
     config.map([ 
      { route: '',    moduleId: 'home'}, 
      { route: 'login', moduleId: './components/account/login', name: 'login'}, 
      { route: 'register', moduleId: './components/account/register', name: 'register'} 
     ]); 

在我home.js我:

{ route: '', moduleId: './components/timeline/timeline', name: 'timeline' }, 
{ route: 'welcome', moduleId: './components/account/welcome', name: 'welcome' }, 
{ route: 'account/EmailConfirmation/:user/:code', moduleId: './components/account/email-confirmation', name:'Email confirmation' }, 
{ route: ':username', moduleId: './components/profile/profile', name: 'profile' } 

有人能帮助我吗?我不想使用重定向,因为重定向使得URL不为空“localhost /”。

+1

它不起作用,因为它会导致一些问题。假设您的用户名为“welcome”。所以,这条路线将是'/ welcome'。但是,您已经有一个名为'welcome'的路由。没有办法确定你尝试获取哪条路线,'/:username'或'/ welcome'。你应该使用'/ profile /:username'类似的东西, –

+0

@Felipe,你能解决这个问题吗? – LStarky

+0

你好@FabioLuz和LStarky,我不应该担心有一个路线“欢迎”和用户名“欢迎”。这是API的职责,不允许用户使用与路由相同的名称。我仍然在努力让它工作。我会尝试LStarky的建议,然后向你报告。 –

配置路由器时使用mapUnknownRoutes功能。我没有测试这个,但你应该可以做这样的事情。请考虑Fabio的建议 - 这是一个很好的建议。但如果你真的想这样做......

config.mapUnknownRoutes({ redirect: '#/' }); 

router.configure(config => { 
    config.mapUnknownRoutes(instruction => { 
    //check instruction.fragment 
    //set instruction.config.moduleId 
    }); 
}); 

基本上你会想看看instruction.fragment获得被指定实际路线,然后将其重定向到与参数特定路线不管路线如何。