【问题标题】:Proper Use of Nested Routes正确使用嵌套路由
【发布时间】:2015-08-26 00:27:28
【问题描述】:

我试图让以下工作:

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

【问题讨论】:

    标签: ember.js routes


    【解决方案1】:

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

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

    只是想在这里留下这个答案,以便人们知道嵌套路由背后有一种方法。我看到你让它工作了,但你仍然应该确保它按照框架希望你做的方式完成。

    【讨论】:

    • 嗯,这也是我要问的。在我的情况下,框架建议做什么?我会读那篇文章。感谢分享。
    • 这是文章之外的quick demo - 它显示了嵌套 UI 如何在其父模板中工作。单击“一”、“二”、“三”链接以查看嵌套模板。
    • 谢谢汤姆。我理解他们是如何工作的。我的问题更多是关于框架/设计的首选。我想这对 SO 来说不是最好的问题。
    【解决方案2】:

    我想通了……

    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}}
    

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2021-04-27
      • 2016-07-22
      • 2019-05-30
      • 2016-06-26
      • 2018-11-26
      相关资源
      最近更新 更多