Lodash _.template рендеринг экранированных символов

У меня есть данные, которые уже сбежали с "контроллера":

<b>

И я использую шаблон lodash (_.template), когда он отображается, он все еще в виде простого текста:

<b>

Ожидаемое:

<b>

Как я могу отобразить этот вид HTML-части без браузера, считая, что это обычный текст, а не элемент?

1 ответ

Решение

Вызовите функцию, чтобы удалить ваш экранированный HTML. В зависимости от вашего случая вы можете выбрать удаление данных и передать результат в шаблон или, как в этом фрагменте, записать вызов функции в шаблоне:

var temp = _.template("<%= htmlDecode(name) %>");

function htmlDecode(input) {
  var doc = new DOMParser().parseFromString(input, "text/html");
  return doc.documentElement.textContent;
}

console.log(temp({ name: "&lt;em&gt;Test&lt;/em&gt;" }));

http://jsbin.com/laretumiqa/edit?html,js,console,output

(Функция htmlDecode исходит из этого вопроса: Unescape HTML-сущности в Javascript?)

Другие вопросы по тегам