2012-05-18 9 views
19

Estoy utilizando el motor de plantillas de manubrios en la aplicación que estoy construyendo para representar los datos que obtengo del servidor.Cómo decodificar la entidad HTML con manubrios

Sé que escapa de los valores HTML de forma predeterminada y que debe utilizar los paréntesis triples {{{text}}} para que text: <p>Example</p> se represente como un elemento HTML.

El problema es, ¿qué hago si los datos que recibo, incluidas las etiquetas HTML, ya se han escapado?

Por lo tanto, si recibo datos como:

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

¿Cómo fuerzo manillar para traducirlo y lo hacen como HTML normal?

+2

La mayoría de los lenguajes de plantilla suponen que los datos están codificados para la salida de destino o es texto sin formato que necesita codificación. No vienen con funciones de "decodificación desde codificación arbitraria". – Quentin

Respuesta

36

Primero tiene que decodificarlo, luego pasarlo a los manubrios con soportes triples. Conozco a un pequeño consejo para decodificar las entidades HTML con 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

+1 para usar este truco para decodificar sin la necesidad de '.replace (/>/g, '>') .replace (/ &/g, '&') .replace (/"/g, '"') .replace (/ '/ g,' ' ') .replace (/ GodLesZ

+0

Gracias, buen truco :) – Maverick

+0

No me importa votar dos veces por esta respuesta si puedo. –

4

Manillar proporciona ayuda y escribo un ayudante personalizado como sigue bajo Hanlebars_helpers.js

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

y utilizar este helper en sus archivos .handlebar o .hbs archivos de la siguiente manera

{{encodeMyString myHTMLData}} 

Sin la ayuda de jQuery se puede usar cualquier donde dentro de tu manubrio Incluso puede usar el ayudante para pasar los datos solo y que devolverá los datos con etiquetas adjuntas y anexas.

Cuestiones relacionadas