17

underscore.js如何在模板中为使用构建的应用程序设置变量backbone.js?我只想创建可重用的处理字符串。另外,可以使用underscore.js's 的内置函数_.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

4

1 回答 1

23

您的尝试 2 几乎是正确的,但是您输出编码标题的标签在=开始时缺少 并且不需要+字符串中的。应该:

<p><%= encodedTitle %></p>

或者你也可以这样做:

<p><% print(encodedTitle) %></p>

在下划线模板中,您想要评估的任何 javascript 都必须包含在其中<% %>,因此您的第二次尝试只是将 javascript 输出为字符串。您在顶部的示例中正确使用了=,但在尝试 2 中省略了它。

告诉模板引擎将=包含的 javascript 的结果作为字符串输出。如果不使用=,则执行 javascript,但不输出任何内容。Underscore 的模板提供了该print()功能作为使用 的替代方法=,我不知道一种方法比另一种更好。

于 2012-06-23T16:51:42.287 回答