使用 {{#each}} 在 (express-)handlebars 模板中迭代来自 helper 的字符串数组
Iterate over array of strings from helper in (express-)handlebars template with {{#each}}
我正在尝试使用 builtin helper '{{#each}}' 遍历车把模板中的字符串数组。
但是没用。
简化示例:
自定义辅助函数,其中 returns 一个字符串数组:
helpers: {
arr: function () {
return ['foo', 'bar'];
}
}
访问助手的模板:
{{#each arr}}
{{@index}}: {{this}}
{{else}}
default
{{/each}}
但这总是打印 else 的情况。
当直接访问助手(没有#each)时,结果如预期:
{{arr}} // prints => foo,bar
我在某处读到#each 需要一个对象来处理。我在文档中的助手上下文中找不到任何关于此的信息 - 尽管如此,我还是尝试以多种方式将返回数组包装在一个对象中。但是我无法让它工作。
那么,如何正确访问车把模板中的字符串数组(来自助手)?
subexpressions 上的 Handlebars 文档说明如下:
Handlebars offers support for subexpressions, which allows you to invoke multiple helpers within a single mustache, and pass in the results of inner helper invocations as arguments to outer helpers. Subexpressions are delimited by parentheses. [emphasis added]
这意味着我们需要告诉 Handlebars arr
是 而不是 要在上下文对象上查找的 属性,但是要调用的助手,我们通过将内部助手包装在括号中来实现:
{{#each (arr)}}
话虽如此,我同意 Mjh 的 ,即 不是 助手的正确用法。您的数据应直接传递给模板函数以进行插值。助手的目的是修改某些数据或对其执行某些逻辑。没有参数的辅助函数是一种非常刺鼻的代码气味。
我正在尝试使用 builtin helper '{{#each}}' 遍历车把模板中的字符串数组。 但是没用。
简化示例:
自定义辅助函数,其中 returns 一个字符串数组:
helpers: {
arr: function () {
return ['foo', 'bar'];
}
}
访问助手的模板:
{{#each arr}}
{{@index}}: {{this}}
{{else}}
default
{{/each}}
但这总是打印 else 的情况。 当直接访问助手(没有#each)时,结果如预期:
{{arr}} // prints => foo,bar
我在某处读到#each 需要一个对象来处理。我在文档中的助手上下文中找不到任何关于此的信息 - 尽管如此,我还是尝试以多种方式将返回数组包装在一个对象中。但是我无法让它工作。
那么,如何正确访问车把模板中的字符串数组(来自助手)?
subexpressions 上的 Handlebars 文档说明如下:
Handlebars offers support for subexpressions, which allows you to invoke multiple helpers within a single mustache, and pass in the results of inner helper invocations as arguments to outer helpers. Subexpressions are delimited by parentheses. [emphasis added]
这意味着我们需要告诉 Handlebars arr
是 而不是 要在上下文对象上查找的 属性,但是要调用的助手,我们通过将内部助手包装在括号中来实现:
{{#each (arr)}}
话虽如此,我同意 Mjh 的