2

我正在使用 underscore.js 和主干为应用程序创建一些视图。这些视图都有相同的前几行,但是根据它们是什么类型的子类而有所不同。有没有一种有效的方法来组合模板,以便我可以将一个单一的“主”模板插入到所有其他模板中?

代码示例:

<script type="text/template" id="template-1">
  {{ name }}
  <span>{{ type }}</span>
  <div>
    <some view specific html>
  </div>
</script>

<script type="text/template" id="template-2">
  {{ name }}
  <span>{{ type }}</span>
  <div>
    <some view specific html>
  </div>
</script>
4

1 回答 1

4

我认为您可以采取两种方法:

  1. 您可以将您的“主”表示为不同的模板,并在渲染视图时将其与子模板(例如,使用 jQuery.append)组合起来。

  2. 或者,下划线模板可以呈现任意 javascript,因此我认为没有什么可以阻止您在模板中呈现模板,例如:

    <%= data.name %>
    <span><%= data.type %></span>
    <div>
        <%= _.template(data.child, data, { variable: 'data' }) %>
    </div>      
    

    或者反过来:

    <%= _.template(data.common, data) %>
    <div>
        Template 1!
    </div>
    

    我添加了一个 jsFiddle 来演示第一个模板示例

于 2012-04-25T19:02:27.660 回答