douboshan1466
douboshan1466
2017-11-23 14:12
浏览 35
已采纳

带有Symfony / PHP7的把手/小胡子

I am trying to work with handlebar templates, but it's not going so well.

In *.html.twig I have:

<script id="entry-template" type="text/x-handlebars-template">
    <div class="entry">
        <h1>{{title}}</h1>
        <div class="body">
            {{body}}
        </div>
    </div>
</script>

<span id="demo">
</span>

<script>
    var source   = document.getElementById("entry-template").innerHTML;
    var template = Handlebars.compile(source);
    var context = {title: "My New Post", body: "This is my first post!"};
    var html    = template(context);
    document.getElementById("demo").innerHTML = html;    
</script>

And there is an error:

Variable "title" does not exist.

When I put this code in simple index.html w/o Symfony etc. it works. Any ideas how to fix it?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dsa456369
    dsa456369 2017-11-23 14:26
    已采纳

    This is happening because Twig is also an HTML templating language which also uses {{ ... }} syntax to denote variables, just like Mustache is, so Twig is trying to parse it before outputting the HTML.

    If you want to use Twig and Mustache together, then you'll need to escape/double-encode the curly braces that are intended for Mustache so that Twig doesn't try to parse them first.

    点赞 评论
  • dongliao3742
    dongliao3742 2017-11-23 14:59

    There is a repo on Github which lets you define your own custom delimiters for Handlebar templates.

    点赞 评论

相关推荐