2016-07-26 64 views
0

我是新手柄,并且被困在通过手柄脚本呈现模板中。以下是代码。输出不包含传递给模板的对象属性。请帮忙!手把模板无法读取通过的数据

<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> 

+1

按预期工作http://codepen.io/anon/pen/Wxyxdz – eltonkamami

+0

它门槛不工作在我的应用程序有..它必须在我的节点应用程序中使用把手的方式做任何事情? – Vatsan28

+0

同样在这里。 https://jsfiddle.net/3hjLztom/浏览器控制台中的任何错误? – ronnyfm

回答

1

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

+0

它仍然不起作用。有什么我需要与我的节点应用程序的配置?它是一个节点应用。对不起,我应该首先提到。 – Vatsan28

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