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: "<em>Test</em>" }));
http://jsbin.com/laretumiqa/edit?html,js,console,output
(Функция htmlDecode исходит из этого вопроса: Unescape HTML-сущности в Javascript?)