4

我有一个 ember 应用程序,其主页显示两个链接:“登录”和“请求邀请”。

每个链接都转到父 ( 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_inorindex/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 回答