【问题标题】:Handling dynamic nested views with Ember + Handlebars使用 Ember + Handlebars 处理动态嵌套视图
【发布时间】:2012-09-14 02:47:07
【问题描述】:

我正在使用 Ember.js 1.0 预发布版和 Handlebars 1.0.0,并希望将 cmets 列表表示为帖子。

我的评论对象是这样的:

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

我的问题是,每条评论可以有多个回复,它们本身就是cmet,所以他们可以有更多的回复。

我已经检查了 Ember.js 和 Handlebars 中的嵌套视图,但似乎没有找到任何方法让它以递归方式遍历所有回复,以“树”方式显示所有 cmets...

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    根据您的问题,我无法准确理解评论和回复的内容,但我认为您仍然应该能够根据我下面的建议解决这个问题。

    您要做的是使用Ember.CollectionView 并定义一个视图类,您将在集合视图上将其用作itemViewClass。因此,您的 itemViewClass 将类似于 CommentView,并且具有如下模板:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      相关资源
      最近更新 更多