underscore.js - 组合模板

时间:2012-04-25 18:21:03

标签: javascript jquery underscore.js

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

代码示例:

<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>

1 个答案:

答案 0 :(得分:4)

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

  1. 您可以将'master'表示为不同的模板,并在渲染视图时将其与子组合(例如使用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>
    

    我已经向demonstrate the first template example in action添加了一个jsFiddle。