Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handlebars, avoid compiling (ignore) part of a template?

Is there a way to tell the Handlebar compiler to ignore a block of template.

I know there is the \ solution, like :

\{{ is.ignored}}

but is there something that would do the same, but for a complete block, like :

<script type="text/x-handlebars-template" id="my-template">
    <ul>
        {{#each items}}
            <li><a href="{{url}}" title="{{title}}">{{display}}</a></li>
        {{/each}}
    </ul>
</script>

I believe it would be better (and far more readable) to have something like {{#ignore}}{{/ignore}} instead of adding \ everywhere.

I tried to find something using block helpers, either building something myself, but I can't get my hand on the non-compiled version of what's inside the block.

like image 453
Cyril N. Avatar asked May 12 '14 09:05

Cyril N.


2 Answers

Unfortunately, Cyril's answer seems out of date? I found this alternative in the Handlebars documentation on raw blocks:

Raw Blocks

Raw blocks are available for templates needing to handle unprocessed mustache blocks.

{{{{raw-helper}}}}
    {{bar}}
{{{{/raw-helper}}}}

will execute the helper raw-helper without interpreting the content.

Handlebars.registerHelper('raw-helper', function(options) {
    return options.fn();
});

will render

{{bar}}
like image 68
Damien Bezborodow Avatar answered Sep 19 '22 02:09

Damien Bezborodow


Yes I finally found it, it's called ... raw ! :

{% raw %}
<script type="text/x-handlebars-template" id="my-template">
    <ul>
        {{#each items}}
            <li><a href="{{url}}" title="{{title}}">{{display}}</a></li>
        {{/each}}
    </ul>
</script>
{% endraw %}

Update : After an update of Handlebars, this snipped seems to not work now. I opened a ticket to see how to make it works.

like image 32
Cyril N. Avatar answered Sep 19 '22 02:09

Cyril N.