0

假设:

Model Foo:
    -> id
    -> name
    -> description
    -> children[]

其中 children 是Foos 的集合。每个Foo都可以有零个或多个孩子,所有孩子都具有与父母相同的基本结构。

在 Backbone.js 中为此执行视图/模板的正确方法是什么?如果这有什么不同的话,我正在构建一个 Rails 应用程序。

4

1 回答 1

0

我最终使用了类似于此处描述的内容: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 %>
于 2012-09-19T17:19:11.300 回答