2013-08-07 99 views
2

我已經在我的餘燼路線中嵌套資源。讓我們假設根據this example,我router.js樣子:如何在Ember.js中定義嵌套資源的路由名稱?

App.Router.map(function() { 
    this.resource('post', { path: '/post/:post_id' }, function() { 
    this.resource('comment', { path ':comment_id' }); 
    }); 
}); 

的文件說,這應該產生這樣的路線:

/post/:post_id    post.index 
/post/:post_id/:comment_id comment.index 

不過,我想這是post.showcomment.show,我該如何重新命名這些路線?

+0

我已經回答了您的問題。我的例子適合你? –

+0

@MárcioRodriguesCorreaJúnior對於我來說,這不是一個解決方法。然而在你的JSbin例子中,評論沒有列出,我不能確認它的工作。 – p1100i

+0

是的,它就像一個解決方法,但我沒有找到其他方法。你可以通過http://jsbin.com/ucanam/647#/post/1/1訪問評論。或者點擊Marcio鏈接http://jsbin.com/ucanam/647#/post/1 –

回答

1

我已經得到這個與以下設置工作。

路由器與動態段:

App.Router.map(function() { 
    this.resource('post.show', { path: '/post/:post_id' }); 
    this.resource('comment.show', { path: '/post/:post_id/:comment_id' }); 
}); 

重寫serializeApp.CommentShowRoute以反映預期的網址:

App.CommentShowRoute = Ember.Route.extend({ 
    serialize: function(model) {  
     return {   
      post_id : model.get("post_id"), 
      comment_id : model.get("id") 
     }; 
    } 
}); 

implementating這是URL產生的主要問題,因爲在該模型serialize掛鉤,未加載,post_id屬性不存在,並且在加載模型後,不會自動更新。因此,定位評論的linkTo將有一個網址post/undefined/1,而不是post/1/1。 單擊鏈接工作,因爲模型加載一段時間後,但如果用戶刷新頁面,將無法正常工作,因爲URL不正確。

爲了解決這個問題,我用this討論論壇評論中的3種方法,我們用action幫手代替linkTo。唯一的區別是,鏈接將不具有URL的href`屬性,但是當點擊所有作品時。

結果是:

App.PostShowRoute = Ember.Route.extend({ 
    events : { 
     goToComment: function(context){ 
      this.transitionTo('comment.show', context); 
     } 
    } 
}); 

這裏是一個demo全面實施。