1

私は Ember.js 1.0 プレリリースと Handlebars 1.0.0 を使用しており、投稿へのコメントのリストを表現したいと考えています。

私のコメントオブジェクトはこれです:

// COMMENT ITEM
HaBlog.Comment = Em.Object.extend({
 user:null,
 text:null,
 created: moment().subtract('years', 100),
 createdAgo: function(){
     return (this.get('created').fromNow());
 }.property('created'),
 rating:null,
 replies:[]

});

そして、これはビューの私のテンプレートです:

 <div id="postComments" class="span10">
        <h1>Comments</h1>
        {{#each comments}}
        <div class="comment">
            <small>
                <span class="commentDate">
                    {{createdAgo}}
                </span>
            </small>
                <span class="commentText">
                    {{text}}
                </span>
        </div>
        {{#each comments.replies}}
        <div class="comment">
            <small>
                <span class="commentDate">
                    {{createdAgo}}
                </span>
            </small>
                <span class="commentText">
                    {{text}}
                </span>
        </div>
        {{/each}}
    </div>

私の問題は、各コメントに多数の返信があり、それ自体がコメントであるため、より多くの返信ができることです。

Ember.js と Handlebars でネストされたビューを確認しましたが、すべてのコメントを「ツリー」方式で表示する再帰的な方法ですべての返信をループさせる方法が見つからないようです...

4

1 に答える 1

2

何がコメントに該当するのか、あなたの質問に基づいて返信するのかを正確に理解するのに少し苦労していますが、以下の提案に基づいて、これを解決できるはずです。

実行したいのは、コレクションビューでEmber.CollectionViewとして使用するビュークラスを使用して定義することです。itemViewClassしたがって、あなたitemViewClassはのようなものCommentViewになり、次のようなテンプレートがあります。

Comment Text: {{text}}
Replies: {{view Ember.CollectionView content=replies itemViewClass=HaBlog.CommentView}}

これは、再帰の問題を処理する唯一の方法です。これは、あなたが言ったように、ハンドルバーだけでは実際には処理できません。

于 2012-09-27T02:53:55.907 に答える