javascript - 如何定义嵌套路由+ ember不渲染嵌套路由的模板

标签 javascript ember.js routes ruby-on-rails-4.1

我有一个 Rails 4 + emberjs 应用程序。我正在尝试在 ember 中创建嵌套路由。我指的是 http://emberjs.com/guides/routing/defining-your-routes/ 中的“嵌套路由”部分。所有后期防御路线都工作正常,但“评论”路线不起作用。我当前的 ember 路线如下:

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

并有一个模板作为 comments.handlebars 包含 {{outlet}} 和 comments/new.handlebars 包含 'Hello World'。将 comments.handlebars 和 new.handlebars 放置在帖子模板内并处于同一级别。尽管如此,仍然没有渲染。

帮助程序的链接如下:

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

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

最佳答案

动态航段值仅适用于动态航段所属的航线。

这意味着您应该在 App.CommentsRou​​te 上加载该帖子,并在 App.CommentsNewRoute 上重复使用它,see the example

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'); 
    }
});

More info

关于javascript - 如何定义嵌套路由+ ember不渲染嵌套路由的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772554/

相关文章:

c# - 路由,如果包含单词则匹配特定的url

javascript - Google Feed API 导致页面空白

javascript - 将文本输入中的小数限制为最大 100.00 的指令(正则表达式)

ember.js - 根据用户权限显示/隐藏内容的最佳方法

java - 同时计算最快路线和一些点

javascript - 使用 Express 提供页面并允许包含文件

javascript - 如何在一个基本的 HTML 网站中立即将所有 404 链接重定向到主页?

javascript - 使用 css 转换 div

ember.js - 使用 Ember.js 和 Ember.Router 将我的 application.handlebars 分解成单独的模板

ember.js - Ember 数据别名模型/映射 JSON 响应