假设我有一个模型,它有一个与之关联的项目数组。
class window.MyModel extends Backbone.Model
urlRoot: () ->
'/model/' + @attributes.name
defaults:
name: null
items: []
initialize: () ->
@name = @attributes.name
@items = @attributes.items
parse: (resp) ->
# Example build resp
@items.push '1'
@items.push '2'
@attributes.items = @items
@
还有一个集合,其中包含所有模型。获取集合只返回一个模型名称列表,没有关于它们的详细信息(因此是内部获取)。
class window.MyCollection extends Backbone.Collection
url: '/collection'
model: window.MyModel
fetch: (options) ->
# IE cache
Backbone.Collection.prototype.fetch.call @, options
parse: (resp) ->
myModels = []
# Example build resp
myModel1 = new window.MyModel(name: 'myModel1')
myModel1.fetch()
myModel2 = new window.MyModel(name: 'myModel2')
myModel2.fetch()
myModels.push myModel1
myModels.push myModel2
myModels
items
在进行提取后从数组构建 CompositeView 的最佳方法是什么?也许是一个mixin?
获取集合,将其添加到视图中:
myColl = new MyCollection()
myColl.fetch()
# which looks like: [{"name":"myModel1",items:["1","2"]},{"name":"myModel2",items:["1","2"]}]
someLayout.region.show new MyCollectionOfItemsViewThatIsAMarionetteCompositeView(
collection: myColl # But really, I just want a collection of all the items (unique) that are in the models
)
本质上,如果 CompositeView 通常使用如下模板进行渲染:
<% obj.name %>
您将拥有myModel1
和myModel2
作为页面元素。
但我希望1
和2
(在本例中)被呈现为页面元素。也许使用如下模板:
<% obj.item %>