gpt4 book ai didi

javascript - 使用 {{#each}} 迭代 (express-)handlebars 模板中 helper 的字符串数组

转载 作者:行者123 更新时间:2023-12-01 02:59:36 24 4
gpt4 key购买 nike

我正在尝试使用 builtin helper '{{#each}}' 迭代 Handlebars 模板中的字符串数组。 。但它不起作用。

简化示例:

返回字符串数组的自定义辅助函数:

helpers: {
arr: function () {
return ['foo', 'bar'];
}
}

访问助手的模板:

{{#each arr}}
{{@index}}: {{this}}
{{else}}
default
{{/each}}

但这总是打印 else 情况。当直接访问帮助器(不带#each)时,其结果符合预期:

{{arr}} // prints => foo,bar

我在某处读到 #each 需要一个对象来使用。我在文档中的帮助程序上下文中找不到任何有关此内容的信息 - 尽管如此,我尝试以多种方式将返回数组包装在对象中。但我没能让它发挥作用。

那么,如何在 Handlebars 模板中正确访问字符串数组(来自助手)?

最佳答案

关于 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)}}

话虽如此,我同意 comment Mjh 指出,这不是助手的正确使用方式。您的数据应直接传递到模板函数进行插值。助手的目的是修改某些数据或对其执行某些逻辑。没有参数的辅助函数是一种非常刺鼻的代码味道。

关于javascript - 使用 {{#each}} 迭代 (express-)handlebars 模板中 helper 的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com