在渲染时,把手部分打印[对象对象]

时间:2015-02-25 00:19:42

标签: javascript handlebars.js

我正在尝试将Handlebars部分注册,以便它可以包含在另一个视图中。我正在使用Handlebars 2.0.0。

这是模板:

{{> subNav}}

<h1>Issue name: {{ name }}</h1>
<h2>Issue id: {{ id }}</h2>

<section id="issue-sections">
  {{#each sections}}
    <li>
      {{> sectionsListItem}}
    </li>
  {{/each}}
</section>

这是部分:

<p>This is a sub navigation.</p>

我正在使用Handlebars预编译器编译所有模板,如下所示:

handlebars views/partials/*.handlebars views/partials/**/*.handlebars -f .tmp/public/js/templates.js

在我的申请中:

Handlebars.partials = Handlebars.templates; 

当我在控制台中运行以下命令时:

Handlebars.templates.issuesShow({'a':'b'});

结果如下:

"[object Object]<p>This is a sub navigation.</p>
<h1>Issue name: </h1>
<h2>Issue id: </h2>

<section id="issue-sections">

</section>"

我不确定为什么打印出[Object object] ....有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我今天遇到了同样的问题。我相信这是因为我在本地安装的把手版本(把手3.0)我用来预编译我的模板和我在浏览器中使用的npm(把手2.0)安装的版本之间的不匹配造成的。我将项目的把手npm包升级到3.0,一切都在游泳。

答案 1 :(得分:0)

我不确定为什么会这样。但是,我认为问题在于模板是使用手柄预编译器预编译的,然后在将它们分配给Handlebars.partials时再次编译。

对此有一个更优雅的解决方案,但我现在让它使用以下与grunt-exec一起运行的命令。

handlebars views/partials/**/*.handlebars > .tmp/public/js/templates.js

这会预编译模板,它们将在Handlebars.templates

中提供

然后我也跑了。

handlebars -p views/partials/**/*.handlebars >> .tmp/public/js/templates.js

使用partials标志再次预编译相同的模板,并将输出附加到相同的模板文件。

然后可以从Handlebars.partials获取这些内容,也可以使用Handlebars在其他模板中使用,包括部分语法:{{> partialName }}