2012-04-25 8 views
2

私は、アンダースコアとバックボーンを使ってアプリのビューを作成しています。ビューはすべて同じ最初の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. あなたが別のテンプレートとしてあなたの「マスター」を表し、そして子供とそれを構成することができます(たとえば、あなたのビューをレンダリングするときに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を追加しました。