许多Backbone.js示例和教程说明了通过CollectionView显示模型集合,CollectionView在其自己的render()函数中循环遍历项目并为每个模型创建一个新的ItemView(然后呈现每个模型)
这意味着当关于它的某些内容发生变化时,你不能只调用你的集合上的render() - 你必须先注意破坏/取消绑定以前的视图。
对于视图对象的这种完全拆卸/重建感觉很重,当一个简单的listview管理方法是说“当关于这个列表的某些东西改变时,重新渲染它”。更复杂(如果可能更有效)的方法是更具体地响应特定事件(例如“选择项目”)并调整单个项目视图。
对于使用模型集合,是否有传统的智慧?
答案 0 :(得分:2)
如果您愿意在混合中添加另一个库,Backbone.Marionette项目会添加一些类来处理集合视图的复杂性并管理视图层次结构:
https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md
如果您向CollectionView提供集合,它将保持同步并添加/删除单个子视图,因为添加或删除了集合中的模型。我发现它非常有用。
如果您想继续使用纯Backbone,您仍然可以查看Marionette的CollectionView的源代码来查看一些常规约定,但您最终可能会重写很多功能。