2

是否有适当或最佳的方法将非模型内容添加到主干集合视图?例如,假设我有一个登录表单,其中用户名和密码字段都代表集合中的模型。为了显示这些,我所要做的就是遍历每个模型的视图,看起来像这样:

addAll: function(){ this.collection.forEach(this.addElementToEl, this); },

但是,将其他元素添加到 DOM 的正确方法是什么,例如容器 div、图标或父表单元素,这些元素没有使用模型正确存储?我应该在渲染之前将额外的 html 附加到集合视图中吗?显然,我可以使用初始请求在服务器端执行此操作,但我想尽可能避免这种情况。

4

1 回答 1

2

这不是一个好办法。当你需要渲染一个非平凡的视图时,有两件事要记住。首先,更喜欢模板(例如 underscore 提供了一个简单的模板引擎)而不是手动构建 DOM,因为模板更具可读性和可维护性。其次,更喜欢层次结构而不是单层结构。例如,不要遍历模板中的集合。每个视图只负责渲染自己的内容,其子视图递归处理它们的内容。这将使您的代码更简单,更易于维护。这种分层结构的另一个好处是它导致更精细的视图粒度和更小的 AJAX 刷新区域。其实这也是Backbone的原理之一。

我建议您阅读这篇出色的文章

于 2013-01-10T02:05:44.537 回答