Javascript 把手模板将模板渲染为文本
我在Handlebar中创建了一个帮助器来帮助处理逻辑,但是我的模板将返回的html解析为文本而不是html 我有一个测验结果页面,该页面在测验完成后呈现:Javascript 把手模板将模板渲染为文本,javascript,template-engine,mustache,handlebars.js,Javascript,Template Engine,Mustache,Handlebars.js,我在Handlebar中创建了一个帮助器来帮助处理逻辑,但是我的模板将返回的html解析为文本而不是html 我有一个测验结果页面,该页面在测验完成后呈现: <script id="quiz-result" type="text/x-handlebars-template"> {{#each rounds}} {{round_end_result}} {{/each}} <div class="clear"
<script id="quiz-result" type="text/x-handlebars-template">
{{#each rounds}}
{{round_end_result}}
{{/each}}
<div class="clear"></div>
</script>
下面是一个描述正确回合的模板(假设它呈现了#回合结束正确模板):
下面是渲染的内容:
<div></div>
不是HTML,而是文本。我如何让它真正将HTML呈现为HTML,而不是文本?我假设在车把中不逃避与在香草胡子中一样有效。 在这种情况下,请使用三重胡须来取消对html的浏览,即:
{{{{unescapedhtml}}
,如:
<script id="quiz-result" type="text/x-handlebars-template">
{{#each rounds}}
{{{round_end_result}}}
{{/each}}
<div class="clear"></div>
{{#每轮}
{{{round_end_result}}}
{{/每个}}
有关ref,请参见:
Geert Jan的答案是正确的,但仅供参考,您也可以直接在帮助器中将结果设置为“安全”(代码来自handlebar.js wiki)
handlebar.registerHelper('foo',函数(文本,url){
text=handlebar.Utils.escapeeexpression(text);
url=handlebar.Utils.escapeeexpression(url);
var结果=“”;
返回新把手。安全字符串(结果);
});
有了它,您可以使用常规的双把手{{},而把手将不会逃逸您的表达式。当使用带有2个参数的registerBoundHelper时,此方法不适用于我。但是“归还新的车把。安全绳(结果);”对我来说很有效。
<div></div>
<script id="quiz-result" type="text/x-handlebars-template">
{{#each rounds}}
{{{round_end_result}}}
{{/each}}
<div class="clear"></div>
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);
});