注:pushState的啓用奧裏利亞路線匹配
我有關於奧裏利亞路線匹配的問題/問題。我在app.ts以下途徑:
{
route: ['profile'],
href: '#',
name: 'profile',
moduleId: PLATFORM.moduleName('../pages/profile', 'profile'),
title: 'Profile'
},
{
route: [':continents/:countries'],
name: 'countries',
moduleId: PLATFORM.moduleName('../pages/countries', 'countries'),
title: 'Countries'
}
在profile.ts模塊,我做的是另configRoute,在這裏我設置另外2個路由,如:
{
route: ['personal'],
href: '#',
name: 'personal',
moduleId: PLATFORM.moduleName('./personal', 'personal'),
title: 'Personal'
},
{
route: ['skills'],
href: '#',
name: 'skills',
moduleId: PLATFORM.moduleName('./skills', 'skills'),
title: 'Skills'
}
問題是:當我導航到/profile/skills
或/profile/personal
時,該路線將匹配國家之一(':continents/:countries'
)。我認爲這是有道理的,因爲整個部分匹配。
我可以在配置文件路徑更改爲
{
route: ['profile', 'profile/:tabName'],
href: '#',
name: 'profile',
moduleId: PLATFORM.moduleName('../pages/profile', 'profile'),
title: 'Profile'
},
但後來我的路線會像/profile/personal/personal
或/profile/personal/skills
我不想要的。
我試圖添加通配符作爲奧裏利亞文檔建議:
{
route: ['profile', 'profile/*tabName'],
href: '#',
name: 'profile',
moduleId: PLATFORM.moduleName('../pages/profile', 'profile'),
title: 'Profile'
},
但像/profile/skills
路線不匹配它,它仍然去了':continents/:countries'
。
我能以某種方式強制它進入profile
頁面嗎? (除子路由'countries'
)
是的,這是我現在的最後一招:)。謝謝您的意見。儘管如此,使它參數化('profile /:tabName')使得它攔截了預期的路線(配置文件,雖然有一個搞砸的url),通配符卻沒有? – Zubzob
如果你告訴路由器尋找一個參數,那麼它會查找'profile /.+' –
最終結果是':foo /:bar'類型的路由不適合你你的根路由器。 –