如何定义嵌套路由+ember不呈现嵌套路由模板

how to define nested routes + ember not rendering template for nested route

本文关键字:路由 嵌套 +ember 何定义 定义      更新时间:2023-09-26

我有一个rails 4+emberjs应用程序。我正在尝试在ember中创建嵌套路由。我引用的"嵌套路线"部分来自http://emberjs.com/guides/routing/defining-your-routes/.所有定义后的路线都很好,但"评论"的路线不起作用。我目前的会员路线是:

App.Router.map ->
  @resource 'posts', ->
    @route 'edit', 
      path: '/:id/edit'
    @route 'show',
      path: '/:id'
    @resource "comments", 
      path: '/:post_id/comments'
    , ->
      @route "new"

我有一个CommentsNewRoute文件为:

App.CommentsNewRoute = Ember.Route.extend                                                                                                               
  model: (params) ->
    post: @store.find 'post', params.post_id

并有一个模板作为包含{{outlet}}的comments.handlebars和包含"Hello World"的comments/new.handebars。将comments.handlebars和new.handebars放置在帖子模板内以及同一级别。不过,没有渲染任何对象。

到helper的链接如下:

{{#link-to 'comments.new' id classNames='pull-right' }}Add New Comment{{/link-to}}

问题是1)CommentsNewRoute中的params是一个空对象,并且不包含post_id。2) 当我单击指向"/#/posts/2/comments/new"的链接时,不会呈现新的评论模板。3) 如何在新的评论页面上显示帖子的对象数据?我做错了什么?

动态分段值仅适用于动态分段所属的路由。

这意味着您应该在App.CommentsRoute上加载帖子,并在App.CommentsNewRoute上重用它,请参阅示例

App.CommentsRoute = Ember.Route.extend({
    model: function (params) {
        return this.store.find('post', params.post_id); 
    }
});
App.CommentsNewRoute = Ember.Route.extend({
    model: function () {
        return this.modelFor('comments'); 
    }
});

更多信息