【问题标题】:When to Render a Model and When to Render a Collection - Backbone.js何时渲染模型以及何时渲染集合 - Backbone.js
【发布时间】:2016-06-09 01:54:27
【问题描述】:

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

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

如果有人能告诉我何时使用以及它们的优点/缺点是什么,我们将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: javascript jquery backbone.js underscore.js


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,埃里克。假设我有一个使用 jQuery UI 对话框的面板,其中有一个添加按钮、滑块等,该面板是否也需要是一个视图?谢谢。
    • 是的,该面板是一个视图是有意义的。主干视图充当较小小部件的容器。通常,视图是应用程序中功能上独立的部分。因此,将添加按钮或滑块设置为单独的视图将是矫枉过正。
    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多