Как декодировать объект HTML с Handlebars
Я использую механизм шаблонов Handlebars в приложении, которое я создаю, чтобы отображать данные, которые я получаю с сервера.
Я знаю, что он по умолчанию избегает значений HTML и вам нужно использовать тройные скобки {{{text}}}
, чтобы text: <p>Example</p>
отображался как HTML-элемент.
Проблема в том, что мне делать, если полученные мной данные, в том числе теги HTML, уже экранированы?
Итак, если я получаю такие данные, как:
text: <p>Example</p>
Как заставить дескрипторы перевести его и отобразить как обычный HTML?
Ответы
Ответ 1
Сначала вы должны декодировать его, а затем передать его в рули с тройными скобками. Я знаю небольшой совет для декодирования html-объектов с помощью jQuery:
// encoded is "<p>Example</p>" 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 вы можете использовать его в любом месте внутри вашего руля.
Даже вы можете использовать помощника для передачи данных в одиночку и который вернет данные с добавленными и добавленными тегами.