Вставить html в шаблон руля без экранирования

150

Есть ли способ вставить строку с тегами html в шаблон ручек без экранирования тегов в исходящей строке?

template.js:

<p>{{content}}</p>

использовать шаблон

HBS.template({content: "<i>test</i> 123"})

фактический результат:

<p>&lt;i&gt;test&lt;/i&gt; 123</p>

ожидаемый результат:

<p><i>test</i> 123</p>
Андреас Кёберле
источник

Ответы:

367

Попробуйте как

<p>{{{content}}}</p>

официальная ссылка :

Handlebars HTML-экранирование значений, возвращаемых a {{expression}}. Если вы не хотите , чтобы избежать Рулей значения, использовать «тройную заначку», {{{.

Правин
источник
28
На этот раз что-нибудь простое .
Madbreaks
8
Честно говоря, это худшее, что они могли выбрать, так как это трудно заметить. Почему не что-то простое, а наглядное вроде {{ rawHtml expression }}.
danneu
1
Согласитесь с @danneu. Никакого волшебства или милой стенографии, пожалуйста. Явный лучше в долгосрочной перспективе.
Мэтт
29

В вашем шаблоне вы должны добавить тройные усы вот так. <p>{{{content}}}</p>

Ерней Новак
источник
13

Согласно документации Handlebars, http://handlebarsjs.com/expressions.html

Цитата из документации ,

Если вы не хотите, чтобы Handlebars экранировал значение, используйте "triple-stash", {{{

Передайте необработанный HTML в шаблон Handlebars и получите необработанный вывод HTML, используя тройные скобки.

{{{foo}}}
Мегаполис
источник