我正在尝试使用Underscore.js(Backbone.js应用程序)渲染模板。我遇到了以下问题,当我尝试获取模板字符串(使用.html(),.text())时,我试图渲染的模板中的一部分变量名被转义:
HTML档案:
<script type="text/template" id="tpl-note-item">
<h1>
<%= noteTitle %>
</h1>
</script>
.js中的值:
var htmlString = $("#tpl-note-item").html();
// <h1>
// <%= noteTitle %>
// </h1>
//
console.log(htmlString);
var template = _.template(htmlString);
html += template({
noteTitle: note.get("title")
});
. . .
由于<%= noteTitle %>
被转义为<%= noteTitle %>
,因此模板呈现为:<%= noteTitle %>
,而不是实际替换note.get("title")
调用中的变量值。
这似乎是一个相当基本的模板用例,所以我相当肯定我遗漏了一些东西。任何帮助都将不胜感激。谢谢!
1条答案
按热度按时间o2g1uqev1#
就在发布这篇文章几分钟后(花了一天的时间),我发现了这个问题:上下文中的HTML页面由我的Golang应用使用以下内容呈现:
template.Must(template.ParseFiles(<page.html>))
但是,我使用的是
html/template
包,它会自动转义任何正在呈现的html文件。切换到text/template
就成功了。作为参考,相关的Golang帖子:Template unnecessarily escaping<
to<
but not>