正确使用嵌套路由

时间:2015-08-26 00:27:28

标签: ember.js routes

我试图让以下工作:

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

我有一个像这样的目录结构:

templates
  - games
    - index.hbs
    - game.hbs
显然,这不起作用。我无法弄清楚如何让game.hbs渲染。在做了一些研究之后,我偶然发现了2013年的article,这使我得到了这个解决方案:

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,我想知道这是否仍然是正确的方法。或者是否有一种方法可以嵌套游戏路线而不需要在路径上添加任何其他东西来使其工作?

2 个答案:

答案 0 :(得分:3)

考虑嵌套路由的一种简单方法是:您希望UI嵌套吗?如果这样做,那么嵌套路线。如果您不希望嵌套UI,则不要嵌套路线。

我可以继续,但有一篇非常好的(最近的)文章,您可能想要查看 - http://fromrailstoember.com/9-nested-routes-equals-nested-ui/

只是想在这里留下这个答案,以便人们知道嵌套路线背后有一种方法。我知道你已经开始工作但是你仍然应该确保它按照框架的方式完成它。

答案 1 :(得分: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}}