0

単一の投稿に属するコメントのリストを表示するために、コメント機能を実装しようとしています。次に、[編集] をクリックして、1 つの投稿に属するすべてのコメントから選択したコメントを編集します。

jsfiddleを更新しました。

上記のフィドルに見られるように、選択した投稿に属するコメントを作成できます。**しかし、既存のコメントを更新することができず、コメント編集フォームにもコメントが表示されません。常に空白で、既存のコメントにはバインドされません。

editcomment をクリックすると、url はposts/2/comments/undefined/editになります。これは、EmBlog.PostCommentRoute と PostEditCommentRoute がまだ null を返すためです。

コメントアウトされたコードはすべて、それを機能させるためのさまざまな試みであり、失敗しました。私はそれらをここに残したので、質問を見ている人なら誰でも私がこれまでに試したことを知ることができます.

常に null を返し、問題を引き起こしている可能性が最も高い 2 つのルート

 EmBlog.PostEditCommentRoute = Ember.Route.extend({
  model: function(params) {
   var commentEdit = this.modelFor('post').get('comments');
   return commentEdit.get(params.comment_id);

   //return EmBlog.Comment.find({post: post.get('id'), id: params.comment_id});

   //var comment = this.modelFor('post').get('comments');
   //return comment.filterProperty('id', params.comment_id);  
  },

  setupcontroller: function( controller, model) {
  controller.set('content', model);
  }
});

単一の投稿を表示するコメント ルート

EmBlog.PostCommentRoute = Ember.Route.extend({
  model: function(params){  
     comment = this.modelFor('post').get('comments');
    // comment = EmBlog.Comment.find(params.comment_id);

    return comment.get(params.comment_id);
    // return comment.filterProperty('body', params.comment_id);
  },

  setupController: function(controller, model) {
    //var comment = this.controllerFor('postComments').get('body');
    //controller.set('content', comment.filterProperty('body', model));

    controller.set('content', model);
  },

});

これがルーターです。ネストの他の組み合わせを試しましたが、コメントを追加できる唯一のバージョンだったので、これに落ち着きました。そのため、この質問はネストされた動的セグメントの更新のみに焦点を当てています。それ以外の場合は、両方について尋ねていました。

 EmBlog.Router.map(function() {
    this.resource("posts", {path: '/posts'}, function(){
      this.route('new');

      this.resource('post', {path: '/:post_id/'}, function(){
        this.route('edit', {path: '/edit'});
        this.route('comments', {path:  '/comments'});
        this.route('newComment');
        this.route('comment', {path: '/comments/:comment_id'});    
        this.route('editComment', {path: '/comments/:comment_id/edit'});       
     }); 
   });
});
4

3 に答える 3

1

ループを修正しました。コンテキストを渡さない前は、パスで未定義になっていました。これで、適切なルートを生成できるように、各コメントを linkTo に渡します。更新されたフィドルのリンクは次のとおりですhttp://jsfiddle.net/VrR2T/4/

<script type="text/x-handlebars" data-template-name="post/comments">
  <h1> Yes Comments template</h1>

    <p> {{#linkTo "post.newComment"}} Add comment{{/linkTo}}</p>
    <br/>
    {{#each comment in content}}
        <br/>
          {{comment.body}} <br/> 
     <p>{{#linkTo "post.editComment" comment}} Edit Comment {{/linkTo}}</p>

    {{/each}}
  {{outlet}}
</script>

こちらが更新後のフォームです。content.body にバインドする必要があります

<script type="text/x-handlebars" data-template-name="post/_commentForm">
   <form {{action save on='submit'}}>
{{view Ember.TextArea valueBinding="content.body" placeholder="body"}}
<button type="submit"> save comment </button> 
 <button {{action 'cancel' content}}> Cancel</button>
</form>
</script>
于 2013-04-12T22:48:33.563 に答える
0

問題 1: パスを変更せずに「/:post_id」のままにしておくと役立つと思います

問題 2: 申し訳ありませんが、ここでお手伝いできることはないと思います。

于 2013-04-10T14:14:05.923 に答える