把手模板作为文本呈现模板
我在Handlebars中创build了一个帮助逻辑的帮助器,但是我的模板将返回的htmlparsing为文本而不是html。
我有一个测验完成后呈现的测验结果页面:
<script id="quiz-result" type="text/x-handlebars-template"> {{#each rounds}} {{round_end_result}} {{/each}} <div class="clear"></div> </script>
对于每一轮,我使用助手来确定哪个模板来呈现一个回合的结果:
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"); } });
这是一个模板,描述一个正确的回合(让我们假设它呈现了#圆形正确的模板):
<script id="round-end-correct" type="text/x-handlebars-template"> <div></div> </script>
以下是呈现的内容:
<div></div>
不是HTML,而是文本。 我如何得到它实际呈现为HTML,而不是文本的HTML?
我认为,在把手上的运动与香草小胡子的运作方式是一样的。 在这种情况下,使用三重胡子unescape html,我,e: {{{unescapedhtml}}}
,如:
<script id="quiz-result" type="text/x-handlebars-template"> {{#each rounds}} {{{round_end_result}}} {{/each}} <div class="clear"></div>
请参阅: http : //mustache.github.com/mustache.5.html
Geert-Jan的答案是正确的,但仅供参考,你也可以直接在helper里面设置结果为“安全”(来自handlebars.js wiki的代码)
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); });
有了这个,你可以使用普通的双把手{{}}和把手将不会逃脱你的表情。