是否可以在评估期间在下划线模板中打印变量,如。
<a href="<%=data.active ? 'the/url' : 'another/url/<%='data.id'%>'%>">Link with printed parameter</a>
这给了我一个意外的标识符错误。我已尝试围绕第二个%>
进行各种切换,但它只是按字面打印。我也尝试使用print()
别名,这样编译器就不会因重复%>
而感到困惑,但没有运气。有没有办法在三元组内做到这一点?
答案 0 :(得分: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
通常是严格数字的,但最好在构建网址时使用encodeURIComponent
。彻底逃离数据是一个很好的习惯。