2013-09-30 44 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比對象名稱)