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

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

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

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

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

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

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

2 ответов


вы должны сначала расшифровать его, а затем передать его на руль с тройными скобками. Я знаю небольшой совет для декодирования 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>

руль обеспечивает помощников и написать пользовательский помощник, как следует под Hanlebars_helpers.js

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

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

{{encodeMyString myHTMLData}}

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