我在Handlebar中创建了一个帮助器来帮助处理逻辑,但是我的模板将返回的html解析为文本而不是html。
我有一个测验结果页面,它在测验完成后呈现:
<script id="quiz-result" type="text/x-handlebars-template">
{{#each rounds}}
{{round_end_result}}
{{/each}}
<div class="clear"></div>
</script>
对于每一轮,我使用一个helper来确定哪个模板来呈现一轮的结果:
Handlebars.registerHelper("round_end_result", function() {
if (this.correct) {
var source = '';
if (this.guess == this.correct) {
console.log("correct guess");
var source = $("#round-end-correct").html();
} else {
var source = $("#round-end-wrong").html();
}
var template = Handlebars.compile(source);
var context = this;
var html = template(context);
console.log(html);
return html;
} else {
console.log("tie");
}
});
下面是一个模板,它描述了一个正确的轮(假设它呈现了# round -end-round模板):
<script id="round-end-correct" type="text/x-handlebars-template">
<div></div>
</script>
下面是所呈现的内容:
<div></div>
不是HTML,而是文本。如何让它真正将HTML呈现为HTML,而不是文本?
发布于 2011-08-24 17:25:40
我假设在把手中取消转义和在香草胡须中是一样的。在这种情况下,使用三个八字胡对html进行非转义,例如:{{{unescapedhtml}}}
,如下所示:
<script id="quiz-result" type="text/x-handlebars-template">
{{#each rounds}}
{{{round_end_result}}}
{{/each}}
<div class="clear"></div>
发布于 2012-05-01 06:13:53
Geert-Jan的答案是正确的,但仅供参考,您也可以直接在帮助器中将结果设置为“安全”(代码来自handlebars.js维基)
Handlebars.registerHelper('foo', function(text, url) {
text = Handlebars.Utils.escapeExpression(text);
url = Handlebars.Utils.escapeExpression(url);
var result = '<a href="' + url + '">' + text + '</a>';
return new Handlebars.SafeString(result);
});
这样你就可以使用常规的双手把{{ }},而把手不会转义你的表达式。
https://stackoverflow.com/questions/7168469
复制相似问题