2014-10-18 9 views
6

Sono in grado di utilizzare il templating sul lato client per nunjucks mentre eseguo il precompilare da node.js ed esporre i file modello JS. Io chiamo i modelli lato client in questo modo:Come utilizzare le macro nunjucks nel browser lato client?

nunjucks.render('partials/some-template.html', { abc: 123 }) 

e ottenere una stringa indietro.

Come posso chiamare macro come ho provato, ma sto sbagliando. Le macro vengono prima dichiarati nella pagina in termini di node.js poi chiamati tempi successivi, per esempio in Node.js:

{% include 'macros/checkbox.html' %} 
... 
{{ checkbox('you cool?', 'cool', false) }} 
{{ checkbox('you collected?', 'collected', false) }} 

Ma non è sicuro come ottenere la macro quindi chiamare di nuovo e di nuovo nel lato client. Ho fatto uno sforzo per passare attraverso l'ispezione nella console finora ma senza fortuna.

risposta

3

Quando volevo eseguire il rendering di una macro sul lato client, ho utilizzato il metodo nunjucks.renderString per importare il file contenente le macro e quindi chiamarlo - tutto in una volta. Il mio file d'uso è il rendering di una macro in HTML, quindi l'aggiunta alla pagina utilizzando Javascript. Un esempio di utilizzo sarebbe:

var renderString = "{% import 'packageForms.html' as forms %} \n"; 
renderString = renderString + '{{ form.packageForm("task") }}'; 
var renderedHTML = nunjucks.renderString(renderString); 
$('#page').append(renderedHTML) 
+0

Ricordare che la versione 'slim' non ha 'renderString' – aaaaaa

Problemi correlati