Handlebars在渲染时部分打印[对象对象]

Handlebars partial printing [Object object] when rendered

本文关键字:对象 打印 时部 Handlebars      更新时间:2024-04-24

我正在尝试注册一个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>"

我不知道为什么要打印[对象对象]。。。。有什么想法吗?

我今天遇到了同样的问题。我相信这是由于我在本地安装的用于预编译模板的手把版本(手把3.0)与我在浏览器中使用的通过npm安装的版本(手把手2.0)不匹配造成的。我将我的项目的手柄npm包升级到3.0,一切都很顺利。

我不太清楚为什么会发生这种情况。但是,我认为问题在于,模板是用handlerbars预编译器预编译的,然后在将它们分配给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 }}