0

about.philosophy と about.staff ルートがネストされた「about」リソースがあります。AboutRoute にはリダイレクトがあり、ナビゲーションの「about」リンクをクリックすると、アプリは about.philosophy にリダイレクトされます。

Ew.AboutRoute = Ember.Route.extend({
  redirect: function(){
    this.transitionTo('about.philosophy');
  }
});

ただし、現在、ネストされたルートのいずれかの内部にいて、ナビゲーションの「about」リンクをもう一度クリックすると、about.philosophy にリダイレクトされる代わりに、「/about」がレンダリングされます。これにはテンプレートがないため、壊れています。ページ。

AboutRoute をもう一度入力しようとしても、このリダイレクトが機能しないのはなぜですか?

アップデート

Dan のソリューションはこの問題を修正しましたが、サブナビが壊れる結果にもなりました。サブナビ コードを含む AboutRoute を AboutIndexRoute に変更したところ、サブナビが表示されなくなりました。

Ew.AboutIndexRoute = Ember.Route.extend({
  activate: function(){
    this.controllerFor('application').set('renderAboutSubNav', true);
  },
  deactivate: function(){
    this.controllerFor('application').set('renderAboutSubNav', false);
  },
  redirect: function(){
    this.transitionTo('about.philosophy');
  }
});

次に、application.hbs に次のものがあります。

{{#if renderAboutSubNav}}
  {{render 'about/subnav'}}
{{/if}}
4

1 に答える 1

3

redirectに配置することをお勧めします。これにより、ユーザーが子ルートではなく、AboutIndexRoute終了したときにのみ呼び出されます。/aboutたとえば、ユーザーが に直接移動できるようにしたい場合や、 に行く途中で を入力したときに呼び出され/about/staffないようにしたい場合があります。redirectAboutRouteAboutStaffRoute

ところで、フックredirectを支持して現在は非推奨になっています (ただし、現在は内部的に呼び出しています)。afterModelafterModelredirect

于 2013-09-23T02:45:50.590 に答える