在 Underscore 模板三元中打印变量
Printing variables within Underscore template ternary
是否可以在像这样的评估期间在下划线模板中打印变量。
<a href="<%=data.active ? 'the/url' : 'another/url/<%='data.id'%>'%>">Link with printed parameter</a>
这给了我一个意外的标识符错误。我在第二个 %>
周围尝试了各种 excapings,但它只是按字面打印。我也尝试过使用 print()
别名,这样编译器就不会被重复的 %>
搞糊涂了,但是没有成功。有没有办法在三元中做到这一点?
当您不尝试使用嵌套模板时,工作没有问题。
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
。干净地转义数据是养成的好习惯。
是否可以在像这样的评估期间在下划线模板中打印变量。
<a href="<%=data.active ? 'the/url' : 'another/url/<%='data.id'%>'%>">Link with printed parameter</a>
这给了我一个意外的标识符错误。我在第二个 %>
周围尝试了各种 excapings,但它只是按字面打印。我也尝试过使用 print()
别名,这样编译器就不会被重复的 %>
搞糊涂了,但是没有成功。有没有办法在三元中做到这一点?
当您不尝试使用嵌套模板时,工作没有问题。
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
。干净地转义数据是养成的好习惯。