假设:
Model Foo:
-> id
-> name
-> description
-> children[]
其中 children 是Foo
s 的集合。每个Foo
都可以有零个或多个孩子,所有孩子都具有与父母相同的基本结构。
在 Backbone.js 中为此执行视图/模板的正确方法是什么?如果这有什么不同的话,我正在构建一个 Rails 应用程序。
假设:
Model Foo:
-> id
-> name
-> description
-> children[]
其中 children 是Foo
s 的集合。每个Foo
都可以有零个或多个孩子,所有孩子都具有与父母相同的基本结构。
在 Backbone.js 中为此执行视图/模板的正确方法是什么?如果这有什么不同的话,我正在构建一个 Rails 应用程序。
我最终使用了类似于此处描述的内容:Run Template in Template (recursion) within 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 %>