Sou relativamente novo em Handlebars.js , mas no meu processo de aprendizagem me deparei com uma armadilha muito interessante. Ambos Jinja2 e Handlebars.js (e Mustache.js , suponho) usam a mesma sintaxe de token-substituição: {{ expression }}
.
O que estava se mostrando complicado foi quando eu quis usar dados do lado do servidor a la Jinja2 em meus modelos de barras de guia. Como o servidor sabe quando deve fazer a substituição do token e quando deve deixá-lo sozinho para mais tarde? Use {% raw %}
:
{{ jinja2 expressions here }}
{% raw %}
{{ handlebars expressions here }}
{% endraw %}
{{ jinja2 expressions here }}
{% raw %}
Diz ao Jinja2 para deixar sozinho o que está dentro, como uma espécie de <pre>
tag HTML .
Isso significa que você deve envolver suas <script type="text/x-handlebars-template">
tags em {% raw %}
tags até o ponto em que precisa que o Jinja2 assuma o controle e, em seguida, “refaça” o seu modelo. Por exemplo:
{% raw %}
<script type="text/x-handlebars-template">
<div>
<h1>{{title}}</h1>
<a href="{% endraw %}{{ getSomeUrl() }}{% raw %}">
{{ linkText }}
</a>
</div>
</script>
{% endraw %}