2013-03-12 71 views
4

我有一個主頁顯示兩個鏈接:'登錄'和'請求邀請'的燼應用程序。emberjs(1.0rc1)嵌套路由,但呈現默認子路由在父母

每條鏈接轉到父路由(index)下的嵌套路由,並呈現到index路由的{{outlet}}中。這是工作,像這樣:

  • /:渲染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 with the above code

第一次加載時,它不顯示index/sign_inindex/request_invite模板。我會默認顯示index/sign_in模板。

回答

6

你可以明確地聲明IndexRoute貫徹redirect hook:

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"); 
    } 
}); 
+0

如果我這樣做,它不會呈現將索引模板導入應用程序插座。這裏有一個小提琴 - 它應該有「登錄請求邀請」鏈接,但沒有。 http://jsbin.com/isodas/5/edit – bantic 2013-03-12 16:32:45

+0

查看我的更新和JS Bin Link。這有點冗長,但我認爲名稱衝突問題,因爲索引可能不應該是一個資源? – mavilein 2013-03-12 18:39:36

+0

是否有可能讓「main」路由呈現「sign_in」路由的內容*而沒有* transitionTo'替換url?這意味着基礎url('/')和sign_in url('/ sign_in')將呈現完全相同的內容。 – bantic 2013-03-13 00:32:08