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_idとの両方にアクセスできますcomment_idShowCommentRoute? それ以外の場合は、モデルの複合キーを忘れる必要がありますか?

なぜ引数CommentsRoute#model(params)CommentsIndexRoute常に空ですか? Postのコメントを取得する方法は?

私のフィドル

このも実行します (問題を示すコンソール ログがあります。

調査後の更新:

のみPostRouteがありますparams.post_id。のみShowCommentRouteがありparams.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(PostRouteおよびPostInderRouteこの例では)
  • すぐに、ネストされたルートに直接アクセスすると、親ルート モデルを取得できなくなります。
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 に答える