何时渲染模型以及何时渲染集合 - 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
视图。
我看到的一个常见模式是单个视图充当子视图的容器。容器视图与集合相关联,而子视图与模型相关联。容器视图被渲染,这导致集合中的每个模型被渲染。
我仍在学习 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
视图。
我看到的一个常见模式是单个视图充当子视图的容器。容器视图与集合相关联,而子视图与模型相关联。容器视图被渲染,这导致集合中的每个模型被渲染。