0

许多 Backbone.js 示例和教程通过使用 CollectionView 来展示模型集合,CollectionView 在其自己的 render() 函数中循环项目并为每个模型创建一个新的 ItemView(然后渲染每个模型)。

这意味着当您的集合发生变化时,您不能只在集合上调用 render() - 您必须首先注意销毁/取消绑定以前的视图。

当一个简单的列表视图管理方法是说“当这个列表发生变化时,重新渲染它”时,这种视图对象的完全拆卸/重建感觉很重。更复杂(如果可能更有效)的方法是更具体地响应特定事件(例如“项目选择”)并调整单个项目视图。

对于处理模型集合,是否有关于此的传统智慧?

4

1 回答 1

2

如果您愿意在您的组合中添加另一个库,Backbone.Marionette 项目添加了一些类来处理集合视图的复杂性和管理视图层次结构:

https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md

如果您向 CollectionView 提供 Collection,它将保持同步并在添加或删除 Collection 中的模型时添加/删除单个子视图。我发现它有很大的帮助。

如果您想继续使用纯 Backbone,您仍然可以查看 Marionette 的 CollectionView 的源代码以了解一些通用约定,但您最终可能会重写很多该功能。

于 2013-09-11T20:53:56.853 回答