子路由不能用空的路由路径
问题描述:
我想创建一个路由到用户的配置文件页面,它必须是“/: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 /”。
答
配置路由器时使用mapUnknownRoutes
功能。我没有测试这个,但你应该可以做这样的事情。请考虑Fabio的建议 - 这是一个很好的建议。但如果你真的想这样做......
config.mapUnknownRoutes({ redirect: '#/' });
router.configure(config => {
config.mapUnknownRoutes(instruction => {
//check instruction.fragment
//set instruction.config.moduleId
});
});
基本上你会想看看instruction.fragment获得被指定实际路线,然后将其重定向到与参数特定路线不管路线如何。
它不起作用,因为它会导致一些问题。假设您的用户名为“welcome”。所以,这条路线将是'/ welcome'。但是,您已经有一个名为'welcome'的路由。没有办法确定你尝试获取哪条路线,'/:username'或'/ welcome'。你应该使用'/ profile /:username'类似的东西, –
@Felipe,你能解决这个问题吗? – LStarky
你好@FabioLuz和LStarky,我不应该担心有一个路线“欢迎”和用户名“欢迎”。这是API的职责,不允许用户使用与路由相同的名称。我仍然在努力让它工作。我会尝试LStarky的建议,然后向你报告。 –