モデルがあり、それに関連付けられたアイテムの配列があるとしましょう。
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 を構築する最良の方法は何ですか? おそらくミックスイン?
コレクションを取得し、ビューに追加します。
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 %>
ページ要素としてandがmyModel1
あります。myModel2
しかし、 (この例では) and をページ要素としてレンダリングしたい1
と考えています。2
多分以下のようなテンプレートで:
<% obj.item %>