Как декодировать в HTML с Handlebars
Я использую механизм шаблонов рулей в приложении, которое я создаю, чтобы отобразить данные, которые я получаю с сервера.
Я знаю, что он избегает значений HTML по умолчанию и что вы должны использовать тройные скобки {{{text}}}
для того чтобы text: <p>Example</p>
для отображения в виде HTML-элемента.
проблема в том, что мне делать, если данные, которые я получаю, включая теги HTML, уже экранированы?
Итак, если я получаю такие данные, как:
text: <p>Example</p>
как заставить руль, чтобы перевести его и отобразить его как обычный HTML?
2 ответов
вы должны сначала расшифровать его, а затем передать его на руль с тройными скобками. Я знаю небольшой совет для декодирования HTML-объектов с помощью jQuery:
// encoded is "<p>Example</p>" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>
руль обеспечивает помощников и написать пользовательский помощник, как следует под Hanlebars_helpers.js
Handlebars.registerHelper('encodeMyString',function(inputData){
return new Handlebars.SafeString(inputData);
});
и используйте этот помощник в своем .handlebar
файлы или .hbs
файлы следующим образом
{{encodeMyString myHTMLData}}
без помощи Jquery вы можете использовать его в любом месте внутри руля. Даже вы можете использовать помощник для передачи данных в одиночку и который вернет данные с добавленными и добавленными тегами.