Estoy jugando con plantillas de renderizado usando Underscore.js (aplicación Backbone.js). Me encuentro con el siguiente problema, donde una parte del nombre de la variable en la plantilla que estoy tratando de representar se escapa cuando intento obtener la cadena de la plantilla (usando .html(), .text()):
archivo HTML:
<script type="text/template" id="tpl-note-item"> <h1> <%= noteTitle %> </h1> </script>.js:
var htmlString = $("#tpl-note-item").html(); // <h1> // <%= noteTitle %> // </h1> // console.log(htmlString); var template = _.template(htmlString); html += template({ noteTitle: note.get("title") }); . . . Como resultado de <%= noteTitle %> escapando a <%= noteTitle %> , la plantilla se representa como:
<%= noteTitle %> en lugar de sustituir el valor de la variable de la llamada a note.get("title") .
Esto parece un caso de uso bastante básico de plantillas, por lo que estoy bastante seguro de que me estoy perdiendo algo. Cualquier ayuda sería muy apreciada. ¡Gracias!
Apenas unos minutos después de publicar esto (y un día lidiando con esto), encontré el problema: mi aplicación Golang está procesando la página HTML en contexto usando:
template.Must(template.ParseFiles(<page.html>))
Sin embargo, estaba usando el paquete html/template , que escapa automáticamente de cualquier archivo html que se esté procesando. Cambiar a text/template funcionó. Como referencia, una publicación de Golang relacionada: plantilla que escapa innecesariamente `<` a `<` pero no `>`