在我的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