次のように仮定します。
Model Foo:
-> id
-> name
-> description
-> children[]
children は のコレクションですFoo
。EveryFoo
は 0 個以上の子を持つことができ、すべて親と同じ基本構造を持ちます。
Backbone.js でこれのビュー/テンプレートを実行する適切な方法は何でしょうか? それが違いを生む場合、私はRailsアプリの上に構築しています。
次のように仮定します。
Model Foo:
-> id
-> name
-> description
-> children[]
children は のコレクションですFoo
。EveryFoo
は 0 個以上の子を持つことができ、すべて親と同じ基本構造を持ちます。
Backbone.js でこれのビュー/テンプレートを実行する適切な方法は何でしょうか? それが違いを生む場合、私はRailsアプリの上に構築しています。
ここで説明されているものと同様のものを使用することになりました: Underscore.js テンプレートエンジン内のテンプレートでテンプレートを実行 (再帰) しますが、CoffeeScript を使用しているため、少し異なります:
景色:
# foo.js.coffee
class MyApp.Views.Foo extends Backbone.View
template: JST['foo']
inititalize: ->
#init stuff
render: =>
templateFn = @template
$(@el).html(@template(model: @model, templateFn: templateFn))
@
には@model
、親の構造を共有する子が内部に含まれます。
テンプレート:
# foo.jst.eco
<%# other output stuff here %>
<%# there is a 'components' attribute that contains the children %>
<% if @model.get('components') : %>
<%# recursive output of components %>
<% for e in @model.get('components') : %>
<% foo = new MyApp.Models.Foo() %>
<% foo.set(e) %>
<%# note the - instead of = below... in my case the JSON contains HTML entities %>
<%- @templateFn(model: component, templateFn: @templateFn) %>
<% end %>
<% end %>