0

是否可以在顺序未知的情况下设置具有动态段的路由器?

我正在开发一个 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/terms但我不能拥有/page/foo/search/terms/anchor/001。随着应用程序的增长,将需要添加更多路线。页面路由将始终存在,但任何其他路由都是可选的。

我希望有一种方法可以增加我没有看到的路由器的灵活性。

4

1 回答 1

1

如果您愿意牺牲少量的 DRYness,则可以:

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

于 2013-10-01T08:17:22.223 回答