10

已经有类似的问题了。

假设以下路线:

App.Router.map(function (match) {
  match('/').to('index');
  match('/posts').to('posts', function (match) {
    match('/').to('postsIndex');
    match('/:post_id').to('post', function (match) {
      match('/comments').to('comments', function (match) {
        match('/').to('commentsIndex');
        match('/:comment_id').to('showComment');
      });
    });
  });
});

是否可以同时访问post_idcomment_idin ShowCommentRoute?否则我应该忘记模型中的复合键吗?

为什么CommentsRoute#model(params)CommentsIndexRoute论点总是空洞的?什么时候检索Post评论?

我的小提琴

也运行这个例子(有控制台日志显示问题。

经过一番调查后更新:

只会PostRouteparams.post_id。只会ShowCommentRouteparams.comment_id和不会有params.post_id

这对于模型具有复合键的应用程序是不可接受的。如果我们showComment逐步过渡到,我们可以获得Comment实例:

App.ShowCommentRoute = Ember.Route.extend({
  model: function(params) {
    var post_id = this.controllerFor('post').get('content.id');
    return App.Comment.find(post_id, params.comment_id);
  }
});

但是,如果我们直接访问,这将不起作用/posts/1/comments/1。在这种情况下this.controllerFor('post')总是undefined

  • 如果您有带有动态段的嵌套路由,则无法*IndexRoute在(PostRoutePostInderRoute本例中)中访问此段
  • 简而言之,直接访问嵌套路由是无法获得父路由模型的。
4

1 回答 1

13

使用 ember-1.0.0-rc.1 现在可以在直接访问 url 时访问父路由的模型。

App.ShowCommentRoute = Ember.Route.extend({
  model: function(params) {
    var post = this.modelFor('post');
    return App.Comment.find(post.get('id'), params.comment_id);
  }
});
于 2013-03-05T13:34:05.613 回答