渲染时车把部分打印 [Object object]

Handlebars partial printing [Object object] when rendered

我正在尝试注册 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]...。有什么想法吗?

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

时再次编译

对此有一个更优雅的解决方案,但我现在可以使用以下命令 运行 with g运行t-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 include 部分语法在其他模板中使用:{{> partialName }}.

我运行今天遇到了同样的问题。我认为这是由于我在本地安装的用于预编译模板的 handlebars 版本 (handlebars 3.0) 与我在浏览器中使用的通过 npm 安装的版本 (handlebars 2.0) 不匹配造成的。我将我项目的 handlebars npm 包升级到 3.0,一切正常。