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}}

这是处理递归问题的唯一方法,正如您所说,仅使用 Handlebars 无法真正处理递归问题。

于 2012-09-27T02:53:55.907 回答