如何在使用underscore.js
构建的应用的backbone.js
模板中设置变量?我只想创建可重用的已处理字符串。此外,可以使用underscore.js
这样的内置函数_.escape
来处理这些变量吗?
<script type="text/html" id="templateresults">
<p><%= encodeURIComponent(title) %></p> // this works
// try 1:
var encodedTitle = encodeURIComponent(title); // shows up as regular text
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text
// try 2:
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up
<p><% '+encodedTitle+' %></p> // nothing shows up
</script>
title
是一个JSON项(文本字符串)。
编码输出:This%20is%20a%20Sample%20Title
常规输出:This is a Sample Title
答案 0 :(得分:20)
您的尝试2几乎是正确的,但输出encodedTitle的标记在开始时缺少=
,并且不需要字符串中的+
。应该是:
<p><%= encodedTitle %></p>
或者您也可以这样做:
<p><% print(encodedTitle) %></p>
在下划线模板中,您想要评估的任何javascript都必须包含在<% %>
中,因此您的第二次尝试只是将javascript作为字符串输出。您在顶部正确使用了样本中的=
,但在第2步中省略了它。
=
告诉模板引擎将包含的javascript的结果作为字符串输出。如果您不使用=
,则会执行javascript,但不输出任何内容。 Underscore的模板提供print()
函数作为使用=
的替代方法,我不知道一种方法比另一种更好。