4

「サインイン」と「招待のリクエスト」の2つのリンクを表示するホームページを持つ残り火アプリがあります。

各リンクは、親()ルートの下のネストされたルートに移動し、ルートのにレンダリングindexされます。それはそのように働いています:{{outlet}}index

  • /index:アプリケーションアウトレットにレンダリング
  • /sign_in:インデックスのものをレンダリングindex/sign_inしてから、インデックステンプレートのアウトレットにレンダリングします
  • /request_invite:インデックスのものをレンダリングindex/request_inviteしてから、インデックステンプレートのアウトレットにレンダリングします

これは正常に機能しますが、私がやりたいのは、indexデフォルトで「サインイン」テンプレートをアウトレットにレンダリングすることです。したがって、上記の最初の箇条書きは次のように変更されます。

  • /:にレンダリングindex、インデックステンプレートのアウトレットにレンダリングします{{outlet}} index/sign_in

テンプレート

<script type="text/x-handlebars" data-template-name="application">
  <h1>application</h1>
  {{#linkTo "index"}}index{{/linkTo}}
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name='index'>
  <h2>index</h2>
  {{#linkTo "index.sign_in"}}Sign in{{/linkTo}}
  |
  {{#linkTo "index.request_invite"}}Request Invite{{/linkTo}}
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name='index/sign_in'>
  <h3>index/sign_in</h3>
</script>

<script type="text/x-handlebars" data-template-name='index/request_invite'>
  <h3>index/request_invite</h3>
</script>

ルート

App = Ember.Application.create();

App.Router.map(function() {
  this.resource("index", function() {
    this.route("sign_in");
    this.route("request_invite");
  });
});

上記のコードを含むjsbinを次に示します

index/sign_in最初にロードしたとき、またはindex/request_inviteテンプレートは表示されません。デフォルトでそのindex/sign_inテンプレートを表示します。

4

1 に答える 1

6

IndexRouteを明示的に宣言し、リダイレクトフックを実装できます。

App.IndexRoute = Ember.Route.extend({
  redirect : function(){
    this.transitionTo("index.sign_in");
  }
});

更新:他の名前のルートを使用してインデックスを作成(JS Bin Link

App = Ember.Application.create();

App.Router.map(function() {
  this.resource("main", function() {
    this.route("sign_in");
    this.route("request_invite");
  });
});
App.IndexRoute = Ember.Route.extend({
  redirect : function(){
    this.transitionTo("main");
  }
})
App.MainIndexRoute = Ember.Route.extend({
  redirect : function(){
    this.transitionTo("main.sign_in");
  }
});
于 2013-03-12T16:01:07.477 に答える