Подтвердить что ты не робот

Как декодировать объект HTML с Handlebars

Я использую механизм шаблонов Handlebars в приложении, которое я создаю, чтобы отображать данные, которые я получаю с сервера.

Я знаю, что он по умолчанию избегает значений HTML и вам нужно использовать тройные скобки {{{text}}}, чтобы text: <p>Example</p> отображался как HTML-элемент.

Проблема в том, что мне делать, если полученные мной данные, в том числе теги HTML, уже экранированы?

Итак, если я получаю такие данные, как:

text: &lt;p&gt;Example&lt;/p&gt;

Как заставить дескрипторы перевести его и отобразить как обычный HTML?

4b9b3361

Ответ 1

Сначала вы должны декодировать его, а затем передать его в рули с тройными скобками. Я знаю небольшой совет для декодирования html-объектов с помощью jQuery:

// encoded is "&lt;p&gt;Example&lt;/p&gt" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>

Ответ 2

Handlebars предоставляет помощников и создает специальный помощник, например, Hanlebars_helpers.js

Handlebars.registerHelper('encodeMyString',function(inputData){
    return new Handlebars.SafeString(inputData);
});

и используйте этот помощник в файлах .handlebar или .hbs следующим образом

{{encodeMyString myHTMLData}}

Без помощи JQuery вы можете использовать его в любом месте внутри вашего руля. Даже вы можете использовать помощника для передачи данных в одиночку и который вернет данные с добавленными и добавленными тегами.