Manubrios Pasa una cuerda o Manubrios AST a la comstackción de manubrios

Sé que ha sido preguntado muchas veces, he mirado las respuestas y no estoy seguro de dónde me estoy equivocando.

Miré los documentos en Handlebarsjs y seguí un tutorial, y en ambas ocasiones recibo el mismo error.

         div {{ headerTitle }} div Today is {{weekDay}}    

Y este es mi Javascript

 var theData = {headerTitle:"name", weekDay:"monday"} var theTemplateScript = $("#header").html(); var theTemplate = Handlebars.compile(theTemplateScript); $(document.body).append(theTemplate(theData)); 

Sigo recibiendo el siguiente error y no estoy seguro de por qué

 Uncaught Error: You must pass a string or Handlebars AST to Handlebars.compile. You passed undefined 

Está ejecutando Handlebars.compile () antes de que elTemplateScript se cargue en el DOM. Mueva su test.js debajo del script de la plantilla y debería estar listo para continuar.

Mover los scripts al final de la página también funcionó para mí.

            

Como han dicho otros, el problema es que está ejecutando Handlebars.compile() antes de que el TemplateScript se cargue en el DOM.

Poniendo sus llamadas javascript en $(document).ready() , asegúrese de que todo el html se cargue primero.

 var theData = {headerTitle:"name", weekDay:"monday"} $(document).ready(function(){ var theData = {headerTitle:"name", weekDay:"monday"} var theTemplateScript = $("#header").html(); var theTemplate = Handlebars.compile(theTemplateScript); $(document.body).append(theTemplate(theData)); }); 

En mi caso, recibí el mismo error, pero el problema fue un error tipográfico en la secuencia de comandos de la plantilla en la página html. Tuve que ‘prouct-template’ debería haber sido ‘producto-plantilla’:

   

Una vez que arreglé el error tipográfico, el error desapareció y la página se cargó bien.

Se necesita un poco de modificación en el archivo JavaScript. Tuve el mismo problema. En mi código, llamé “manubrios” desde Vistas (la siguiente explicación es con respecto a las vistas).

Incluir siguiente en la función de inicialización (init) de Vista:

theTemplate = Handlebars.compile (theTemplateScript);

En render, escribe el código restante:

var theTemplate = Handlebars.compile (theTemplateScript); $ (document.body) .append (theTemplate (theData));

La forma correcta es precomstackr Handler, Store in file y luego asignarlo a la theTemplate .