我有一个非常常见的视图结构,其中包含列表页面和详细信息页面。我想创建一个非常简单的路径结构,如:
/leaderboard
/leaderboard/123
设置我创建的路由时:
..addRoute(
name: 'leaderboard',
path: '/leaderboard',
enter: view('view/leaderboards.html'))
..addRoute(
name: 'leaderboard',
path: '/leaderboard/:leaderboardId',
enter: view('view/leaderboard.html'));
导航到/leaderboard
时一切正常,但导航到/leaderboard/123
时,angulardart会抱怨它找到了多条路线但根本没有路由。
我目前的解决方案是为列表页面使用不同的路径(/leaderboards
并在末尾添加's')但这不太好。
答案 0 :(得分:1)
正如this answer of Angular Dart: matching rules for route path - implicit suffix wildcard?所述:
如果您担心两个路径之间的冲突,其中一个路径恰好是另一个路径的前缀,那么正确的方法是将最具体的路径放在第一位。
您还可以考虑使用hierarchical routes。
附注:建议使用唯一的路径名称。
答案 1 :(得分:1)
接受的答案是正确的,但我总是担心使用排序来使路线正常工作。我建议做这样的事情:
..addRoute(
name: 'leaderboard',
path: '/leaderboard/all',
enter: view('view/leaderboards.html'))
..addRoute(
name: 'leaderboard',
path: '/leaderboard/:leaderboardId',
enter: view('view/leaderboard.html'));
我认为,使路径像'排行榜/所有'(或类似的东西)会让它更加健壮。