在我的Backbone.js应用程序中,我有一个包含集合的模型。为了支持从后端获取该模型,我重写了解析方法,将JSON响应中的数组转换为集合实例。它看起来是这样的:Backbone.js包含集合的模型视图?
class SomeModel extends Backbone.Model
defaults: ->
collection: new SomeCollection([new SomeModel(attr: value)])
parse: (res) ->
res.collection = new SomeCollection(res.collection)
res
class SomeCollection extends Backbone.Collection
model: SomeOtherModel
class SomeCollectionView extends Backbone.View
el: $('collection-view')
我的问题是,虽然SomeCollectionView
调用SomeModel.fetch()
该实例被替换时,势必会SomeCollection
,现有实例和视图不再有效。我可能在旧的视图上调用remove()
并实例化一个新的,但我的SomeCollectionView
分层在现有的HTML(不是从模板构建)之上,调用remove从DOM中取出元素。而且,如果我的观点能够对变化事件作出简单反应而不需要重建,我更愿意。
整洁。然而,这种方法的缺点是你不能调用`model.get('collection')`,而是必须调用`model.collection`。我不是非常喜欢这种不对称,但也许这是一个必要的罪恶。 – errcw 2011-12-15 05:30:53