我在Node.js / Express应用程序中使用Handlebars。我有带有方括号的几个键的JSON - tools[]
等。
我可以使用引号{{'tools[]'}}
将这些键正常传递给Handlebars,并且应用会返回有效值。
当我尝试迭代其键位于引号中的值时 -
{{#each 'tools[]'}}Something here...{{/each}}
我无法获得任何结果。
是虫子吗?我使用了错误的语法吗?
可能的解决方案可能是更改JSON中的键(不使用方括号)。但是这些括号对于从enctype=multipart/form-data
形式的复选框中获取多个值是必要的,更改所有这些键会非常痛苦。
提前感谢您的帮助!
答案 0 :(得分:1)
来自车把docs:
您可能不会在路径文字中包含结尾,而是包含所有其他结果 人物是公平的游戏。
所以你唯一的方法是使用子表达式。您可以在lookup
内使用内置#each
帮助程序。
Handlebars提供对子表达式的支持,允许您使用 在一个小胡子中调用多个助手,并传入 内部帮助程序调用的结果作为外部帮助程序的参数。 Subexpressions由括号分隔。
{{#each (lookup this "tools[]")}}
{{this}}
{{/each}}
const data = {
"tools[]": [1,2,3,4]
};
const template = `
{{#each (lookup this "tools[]")}}
tools[{{@index}}]: {{this}}
{{/each}}`;
console.log(Handlebars.compile(template)(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script>