在重构某些代码时,我遇到了这个问题:当应用使用部分代码的Handlebars模板时,它会抱怨You must pass a string or Handlebars AST to Handlebars.compile. You passed function ...
。功能如下:
function (context, options) {
options = options || {};
var namespace = options.partial ? options : env,
helpers,
partials;
if (!options.partial) {
helpers = options.helpers;
partials = options.partials;
}
var result = templateSpec.call(
container,
namespace, context,
helpers,
partials,
options.data);
if (!options.partial) {
checkRevision(container.compilerInfo);
}
return result;
}
我做了什么:
partial用于迭代列表(称为成员)以构建ul
个复选框。我发现我需要列出一个列表并将调用放在#each
内部并更新模板输入。
我有这个:
模板:
...
{{#each hierarchy.levels}}
<ul>
{{> mypartial}}
</ul>
{{/each}}
部分(简化):
{{#each members}}
<li>{{this.id}}</li>
{{/each}}
我已检查过我的数据结构中的每个hierarchy.levels
都有一个members
列表。
如果我将模板中的#each
替换为#with hierarchy.levels.[0]
(例如)它可以正常工作,但在迭代levels
时无效。
答案 0 :(得分:0)
我解决了。其中一个第二级列表是空的(即零项)导致Handlebars将其呈现为空字符串,这再次导致Handlebars认为某些内容是错误的并且尝试将partial呈现为常规模板。