是否可以设置具有动态段的路由器,其中订单是未知的?
我正在开发一个SPA,其中两个主要组件是搜索窗格和内容窗格。在内容窗格中,您可以导航链接,并在内容窗格中加载新内容。
您还可以在搜索窗格中搜索并显示结果列表。单击搜索结果将更新内容窗格。除了这些要求之外,用户还需要能够单击命名锚点链接并滚动到内容中的特定位置。
原始路由器如下所示:
App.Router.map(function() {
this.route('index', {path: '/'});
this.resource('page', {path: 'page/:page_id'}, function() {
this.resource('anchor', {path: 'anchor/:anchor_id'});
this.resource('search', {path: 'search/:search_id'});
});
});
此路由器的问题是我可以 / page / foo , / page / foo / anchor / 001 和 / page / foo / search /条款,但我不能 / page / foo / search / terms / anchor / 001 。随着应用的增长,需要添加更多路线。 页面路线将始终存在,但其他任何路线都是可选的。
我希望有一种方法可以在我的路由器中增加更多的灵活性,而我却没有看到。
答案 0 :(得分:1)
如果你愿意牺牲少量的干燥,这就有效:
App.Router.map(function() {
this.route('index', {path: '/'});
this.resource('page', {path: 'page/:page_id'}, function() {
this.resource('anchor', {path: 'anchor/:anchor_id'});
this.resource('search', {path: 'search/:search_id'}, function(){
this.resource('anchor', {path: 'anchor/:anchor_id'});
});
});
});
(注意你必须使用资源,如果你使用路由,父资源的命名空间被添加到生成的v / c对象名称)