Руль шаблон рендеринга шаблон в виде текста
Я создал помощника в руле, чтобы помочь с логикой, но мой шаблон анализирует возвращенный html как текст, а не 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");
}
});
вот шаблон, который описывает правильный раунд (допустим, он отображает #round-end-correct шаблон):
<script id="round-end-correct" type="text/x-handlebars-template">
<div></div>
</script>
вот что получается:
<div></div>
не как HTML, а как текст. Как мне заставить его фактически отображать HTML как HTML, а не текст?
2 ответа:
Я полагаю, что невыход в руль работает так же, как в ванили усы. В этом случае используйте тройные усы для unescape html, i, 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 верны, но только для справки вы также можете установить результат в "безопасный" непосредственно внутри помощника (код из руля.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); });
С этим вы можете использовать обычные двойные рули {{ }} и рули не будут избегать вашего выражения.