车把模板无法读取传递的数据

时间:2016-07-26 20:41:49

标签: javascript handlebars.js

我是车把的新手,我坚持通过车把脚本渲染模板。下面是代码。输出不包含我传递给模板的对象属性。请帮忙!

    <script   src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.4/handlebars.js">  </script>
    <script>
    var context = { "name" : "XYZ", "occupation" : "developer" };

    var templateScript = $('#handlebars-demo').html();
    var theTemplate = Handlebars.compile(templateScript);
    var html = theTemplate({name: "XYZ",occupation: "developer"});
    console.log(html);
    $(document.body).append(html);
</script>
<script id="handlebars-demo" type="text/x-handlebars-template">
<div>
    My name is {{name}}. I am a {{occupation}}. // This just just renders My name is . I am a .
</div>

2 个答案:

答案 0 :(得分:1)

尝试{{context.name}}{{context.occupation}}

答案 1 :(得分:1)

当使用带有节点js的把手时,我遇到了同样的问题。

问题是,当您创建车把模板时,它将使用服务器端编译器预编译您的脚本使用它的上下文(来自服务器的响应)。 那么 templateScript 变量在上下文中没有名称和职业,将看起来像这样:

<div>
    My name is . I am a .
</div>

有一些解决方案可以避免这种情况:

  • 添加\{{以逃避表达
<script id="handlebars-demo" type="text/x-handlebars-template">
    <div>
        My name is \{{name}}. I am a \{{occupation}}.
    </div>
</script>
  • 单独预编译客户端脚本。

有关详细信息,请查看以下链接: Node.js with Handlebars.js on server and client