0

我有这个router

// app/router.js
Router.map(function() {
  this.route('battles', function(){
    this.route('battle', { path: ':id' }, function(){
      this.route('combats', function() {
        this.route('new');
      });
    });
  });
});

而这些templates

  // app/templates/battles.hbs
  {{#each model as |battle|}}
    {{battle.name}}
  {{/each}}
  {{outlet}}

  // app/templates/battles/battle/combats.hbs
  {{#each model as |combat|}}
    {{combat.date}}
  {{/each}}

  // app/templates/battles/battle/combats/new.hbs
  {{input type="text" value=date}}
  <button {{action "createCombat"}}>Create Combat</button>

所以这就是为每个渲染的route

  route: /battles
  -> app/templates/battles.hbs

  route: /battles/B2/combats
  -> app/templates/battles.hbs
  -> app/templates/battles/battle/combats.hbs

  route: /battles/B2/combats/new
  -> app/templates/battles.hbs
  -> app/templates/battles/battle/combats.hbs

所以对于路线/battles/B2/combats/new,模板app/templates/battles/battle/combats/new.hbs不会被渲染。这有一个快速修复:

  // app/templates/battles/battle/combats.hbs
  {{#each model as |combat|}}
    {{combat.date}}
  {{/each}}
  {{outlet}}

但随后路线呈现:

  route: /battles/B2/combats/new
  -> app/templates/battles.hbs
  -> app/templates/battles/battle/combats.hbs
  -> app/templates/battles/battle/combats/new.hbs

而且我不希望在渲染表单时渲染战斗列表。combat/new我想要这个:

  route: /battles/B2/combats/new
  -> app/templates/battles.hbs
  -> app/templates/battles/battle/combats/new.hbs

如何创建此设置?

4

1 回答 1

0

如果您不希望在显示“新”视图时呈现战斗视图,则应将它们放置在同一级别,而不是“战斗”路线下方的“新”路线。超级路由总是被称为子路由。或者,您可以从“新”路线在战斗控制器中设置一个布尔值。虽然这不是很干净。

于 2015-12-21T13:21:18.190 回答