2016-02-26 221 views
0

我仍然在学习Backbone.js,我不确定在每次渲染model与渲染collection之间有什么优缺点。何时渲染模型以及何时渲染集合 - Backbone.js

我看过一个例子,他们一次渲染一个model。例如:

//in parent view  
var view = new SectionView({model: section}); 

this.$("#section-list").append(view.render().el); 



//in child view, render() 

this.$el.html(this.template(this.model.toJSON())); 

与模板类似:

<script type="text/template" id="section-template"> 
     <section class="view" id=section-<%- id %>> 
       <label><%- height %></label> 
       <label><%- color %></label> 
       <label><%- id %></label> 
       <button class="destroy">Delete</button> 
     </section> 
</script> 

但是,我也看到的例子,他们使整个collection像这样post

非常感谢,如果有人能告诉我什么时候使用以及它们的优点/缺点是什么。

预先感谢您。

回答

2

您不渲染模型或集合,而是渲染视图。视图通常包含一个模型或一个集合,或者较少见的是两者的混合。所以真正的问题是视图应该与模型还是集合相关联?答案应该是自然而然的。

假设您有涉及库的应用程序。您有一个book模型,一个books集合,因此最终将以book视图和一个books视图结束。 books视图应更多地按语义命名,如bookshelf视图。当您渲染bookshelf视图时,您将遍历其books集合,并将每个book模型分配给新的book视图,然后渲染该视图。 bookshelf视图会填充book视图。

我看到的常见模式是充当子视图容器的单个视图。容器视图与集合关联,而子视图与模型关联。呈现容器视图,这会导致呈现集合中的每个模型。

+0

谢谢Eric。比方说,我有一个使用jQuery UI对话框的面板,它有一个添加按钮,滑块等,面板也需要是一个视图吗?谢谢。 – HuorCulnamo

+0

是的,它是有意义的,该面板是一个视图。骨干视图充当小型小部件的容器。通常,视图是应用程序的功能独立部分。所以使添加按钮或滑块单独的视图将是矫枉过正。 –