Backbone.js - 从View中渲染数组而不在模板中创建循环

时间:2013-04-23 09:46:50

标签: javascript ruby-on-rails backbone.js backbone-views

我正在使用骨干网加载所有帖子。点击“获取所有评论”链接,为帖子加载评论。我收到了Ajax电话的所有评论。

Social.Views.StreamsIndex = Backbone.View.extend({

    comment_template: JST['streams/comment'],

    comment_displayall: function(data, post_id) {
      this.$("#comments").html(this.comment_template({
        comment: data // Here data is array
      }));
    }
});

我有 comment.jst.ejs文件,其中现在有一个循环,但我必须将其置于视图中

  <% _.each(comment.comments,function(comment){ %> // I want to get rid of this Line
 <div class="stream_comment">
   <div class="stream_commentphoto">
    <a><img src="<%= comment.actor.thumbnail.url %>"></a>
   </div>
   <div class="stream_comm-content">
    <a href="#"><h5><%= comment.actor.displayName %></h5> </a>
    <p><%= comment.content %></p>
   </div>
 </div>
<%}%>

如何通过在视图中添加循环来摆脱评论模板中的循环?

1 个答案:

答案 0 :(得分:1)

也许是这样的:

comment_displayall: function(data, post_id) {

    //clear any existing comments
    var $comments = this.$("#comments").empty();

    //render each comment separately and append to the view
    _.each(data.comments, function(comment) {
        $comments.append(this.comment_template({comment:comment});      
    }, this);
}

只需删除模板的循环结构(第一行和最后一行)。

/代码示例未经过测试