何时渲染模型以及何时渲染集合 - Backbone.js

When to Render a Model and When to Render a Collection - Backbone.js

我仍在学习 Backbone.js,我不确定一次渲染 model 与渲染 collection.[=18 之间的优缺点是什么=]

我见过他们一次渲染一个 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

如果有人能告诉我何时使用以及他们的 advantages/disadvantages 是什么,我将不胜感激。

提前致谢。

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

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

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