Cómo decodificar una entidad HTML con manillares
-
11-12-2019 - |
Pregunta
Estoy usando el motor de plantillas de manillar en la aplicación que estoy creando para representar los datos que obtengo del servidor.
Sé que escapa de los valores HTML de forma predeterminada y que hay que usar los corchetes triples. {{{text}}}
para poder text: <p>Example</p>
para ser representado como un elemento HTML.
El problema es, ¿qué hago si los datos que recibo, incluidas las etiquetas HTML, ya están escapados?
Entonces, si recibo datos como:
text: <p>Example</p>
¿Cómo fuerzo a los manillares a traducirlo y renderizarlo como HTML normal?
Solución
Primero hay que decodificarlo y luego pasarlo al manillar con soportes triples.Conozco un pequeño consejo para decodificar entidades html con jQuery:
// encoded is "<p>Example</p>" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>
Otros consejos
Manubrios proporciona ayudas y escribe un ayudante personalizado como se muestra a continuación Manillar_helpers.js
Handlebars.registerHelper('encodeMyString',function(inputData){
return new Handlebars.SafeString(inputData);
});
y utiliza este ayudante en tu .handlebar
archivos o .hbs
archivos de la siguiente manera
{{encodeMyString myHTMLData}}
Sin la ayuda de Jquery puedes usarlo en cualquier lugar dentro del manillar.Incluso puede usar el asistente para pasar los datos solo y devolverá los datos con etiquetas antepuestas y adjuntas.