2015-08-26 233 views
0

的正確使用方法,我試圖讓下面的工作:嵌套路線

Router.map(function() { 
    this.route('games', function() { 
     this.route('game', {path: '/:game_id'}, function() {}); 
    }); 
}); 

我有一個目錄結構如下所示:

templates 
    - games 
    - index.hbs 
    - game.hbs 

顯然,這是行不通的。我真的不知道如何讓game.hbs渲染。之後做一些研究,我偶然在一個article從2013年那使我這個解決方案:

Router.map(function() { 
    this.route('games', function() {}); 
    this.route('game', {path: 'games/:game_id'}, function() {}); 
}); 

templates 
    - games 
    - index.hbs 
    - game 
    - index.hbs 

注意,我不得不加入兩個路​​由空function() { }得到子目錄結構的工作。

我使用Ember 1.13.7,我想知道這是否仍然是正確的方法。或者有沒有一種方法可以嵌套遊戲路線,而無需在路徑上添加任何其他功能以實現其功能?

回答

0

我想通了這一點......

Router.map(function() { 
    this.route('games', function() { 
     this.route('game', {path: '/:game_id'}, function() {}); 
    }); 
}); 

我可以定義像上面的路線和鏈接來幫助有能力改變來自:

{{#link-to 'game' this}}{{title}}{{/link-to}} 

{{#link-to 'games.game' this}}{{title}}{{/link-to}} 
2

思考嵌套路線的一個簡單方法是:你想讓你的UI嵌套嗎?如果你這樣做,然後嵌套路線。如果你不想讓你的UI嵌套,那麼不要嵌套你的路線。

我可以繼續下去,但有關於這一個很好的(和最近)的文章,你可能想看看 - http://fromrailstoember.com/9-nested-routes-equals-nested-ui/

只想讓人們知道後面有一個方法離開這裏了這個答案嵌套路線。我看到你的工作有效,但你仍然應該確保它按照框架打算讓你做到的方式完成。

+0

那麼,這也是我的問題。在我的情況下,框架建議做什麼?我會閱讀那篇文章。感謝分享。 – Gregg

+0

這是文章外的[快速演示](http://emberjs.jsbin.com/magivijere/edit?html,js,output) - 它展示了嵌套UI如何在其父模板內工作。點擊'one','two','3'鏈接查看嵌套模板。 –

+0

謝謝湯姆。我明白他們是如何工作的。我的問題更多是關於框架/設計的首選。我想這對於SO來說不是最好的問題。 – Gregg