2017-02-01 6 views
0

評価の際にアンダースコアテンプレートで変数を印刷することは可能ですか?アンダースコアテンプレート内の変数を印刷する

<a href="<%=data.active ? 'the/url' : 'another/url/<%='data.id'%>'%>">Link with printed parameter</a> 

これにより、予期しない識別子エラーが発生します。私は第二の周りの様々なexcapingsで試してきました%>しかし、それは文字通り印刷されます。また、print()エイリアスを使用してみましたので、コンパイラが繰り返しで混乱することはありません%>、ただし運はありません。これを三者の中で行う方法はありますか?

答えて

3

テンプレートをネストして使用しないときに問題なく動作します。

var source = document.getElementById("testTemplate").innerHTML; 
 
var testTemplate = _.template(source); 
 

 
document.getElementById("target1").innerHTML = testTemplate({ 
 
    data: { 
 
    active: false, 
 
    id: 12345 
 
    } 
 
}); 
 

 
document.getElementById("target2").innerHTML = testTemplate({ 
 
    data: { 
 
    active: true, 
 
    id: 67890 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 

 
<script type="text/template" id="testTemplate"> 
 
    <a href="<%= data.active ? 'the/url' : 'another/url/' + encodeURIComponent(data.id) %>">Link with printed parameter</a> 
 
    <p>The URL is "<%= data.active ? 'the/url' : 'another/url/' + encodeURIComponent(data.id) %>".</p> 
 
    <hr> 
 
</script> 
 

 
<div id="target1"></div> 
 
<div id="target2"></div>

注:お使いのdata.idは通常厳密に数値であっても、それはあなたがURLを構築しているとき、とにかくencodeURIComponentを使用することをお勧めします。データをきれいにエスケープするのは良い習慣です。