2013-09-30 46 views
0

是否可以使用动态段设置路由器,其中订单未知?带可选动态段和未知订单的Ember路由器

我正在开发一个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'}); 
    }); 
}); 

与该路由器的问题是,我可以有/页/富/页/富/锚/ 001/页/富/ search/terms但我不能有/page/foo/search/terms/anchor/001。随着应用程序的增长,将需要添加更多路线。路线将始终存在,但任何其他路径都将是可选的。

我希望有一种方法可以在我的路由器中添加更多的灵活性,但我没有看到。

回答

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比对象名称)