下划线模板:“

时间:2014-12-21 18:18:52

标签: javascript backbone.js underscore.js-templating

我发现下划线模板存在一个奇怪的问题。

<string不会显示带有html编码<的字符串,而是返回一个空字符串。但< string正常工作。 请注意所需的空间。

jsfiddle:http://jsfiddle.net/BwHxv/281/

在小提琴中,尝试添加一个空格,这样你就会发现它可以正常工作。

有什么特别的原因吗?如果用户意外键入此字符,则不应将其变为空字符串。

2 个答案:

答案 0 :(得分:3)

在jQuery的<%= ... %>中使用Underscore的.html()语法会将name的值视为原始标记,并且对于浏览器,<string似乎是不完整且无效的HTML标签

要对模板中的占位符进行编码,以便将其呈现为文本,您可以将<%=更改为<%-http://jsfiddle.net/0cL4c1yx/):

var template = _.template( "<%- name %>", obj );

或者,您可以使用jQuery的.text()将整个模板结果视为文本。

答案 1 :(得分:2)

HTML字符串<string是&#34;字符串&#34;的开头。元件。这是胡说八道,因此您的浏览器无法显示任何内容。

HTML字符串< string只是文字。它有效,因此您的浏览器会显示文字代表。

错误是您将纯文本传递给期望HTML的方法。最简单的解决方法是更改​​

.html

.text