Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用{{{#each}}在(express-)handlebar模板中迭代helper中的字符串数组_Javascript_Node.js_Handlebars.js_Handlebarshelper_Express Handlebars - Fatal编程技术网

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

Javascript 使用{{{#each}}在(express-)handlebar模板中迭代helper中的字符串数组,javascript,node.js,handlebars.js,handlebarshelper,express-handlebars,Javascript,Node.js,Handlebars.js,Handlebarshelper,Express Handlebars,我正在尝试使用遍历Handlebar模板中的字符串数组。 但它不起作用 简化示例: 返回字符串数组的自定义帮助器函数: helpers: { arr: function () { return ['foo', 'bar']; } } 要在其中访问帮助程序的模板: {{#each arr}} {{@index}}: {{this}} {{else}} default {{/each}} 但这总是打印出else的案例。 直接访问帮助器(不带#每个)时,结果与预期一致: {

我正在尝试使用遍历Handlebar模板中的字符串数组。 但它不起作用

简化示例:

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

helpers: {
  arr: function () {
    return ['foo', 'bar'];
  }
}
要在其中访问帮助程序的模板:

{{#each arr}}
  {{@index}}: {{this}}
{{else}}
  default
{{/each}}
但这总是打印出else的案例。 直接访问帮助器(不带#每个)时,结果与预期一致:

{{arr}} // prints => foo,bar
我在某个地方读到,每个人都需要一个对象来处理。我在文档中的帮助器上下文中找不到任何关于此的内容-尽管如此,我尝试以几种方式将返回的数组包装到对象中。但我没能让它工作


那么,如何正确访问Handlebar模板中的字符串数组(来自帮助器)?

Handlebar文档说明了以下内容:

Handlebars提供了对子表达式的支持,允许您在一个小胡子中调用多个帮助程序,并将内部帮助程序调用的结果作为参数传递给外部帮助程序。子表达式由括号分隔。[重点补充]

这意味着我们需要告诉Handlebar,
arr
不是要在上下文对象上查找的属性,而是要调用的帮助器,我们通过将内部帮助器括在括号中来实现这一点:

{{#each (arr)}}

尽管如此,我同意Mjh的观点,即这不是正确使用助手。数据应该直接传递给模板函数进行插值。助手的目的是修改某些数据或对其执行某些逻辑。没有参数的helper函数是一种非常刺鼻的代码味道。

有关Handlebar的文档说明如下:

Handlebars提供了对子表达式的支持,允许您在一个小胡子中调用多个帮助程序,并将内部帮助程序调用的结果作为参数传递给外部帮助程序。子表达式由括号分隔。[重点补充]

这意味着我们需要告诉Handlebar,
arr
不是要在上下文对象上查找的属性,而是要调用的帮助器,我们通过将内部帮助器括在括号中来实现这一点:

{{#each (arr)}}

尽管如此,我同意Mjh的观点,即这不是正确使用助手。数据应该直接传递给模板函数进行插值。助手的目的是修改某些数据或对其执行某些逻辑。没有参数的helper函数是一种非常刺鼻的代码味道。

如果您这样做是出于测试目的或作为一个游乐场,那么就不要让helper返回数组。Helper应该应用于一个值,而不是返回您迭代的数组。您的助手返回数组(用于测试目的除外)有什么原因吗?是否会有一种情况下,您将实际使用一个助手,为您提供迭代的数组?我是新手。我正在节点应用程序中使用。我的理解是,助手的一个用例是将信息(例如数组)从服务器传递到客户端。如果您这样做是出于测试目的或作为一个游乐场,那么就不要让助手返回数组。Helper应该应用于一个值,而不是返回您迭代的数组。您的助手返回数组(用于测试目的除外)有什么原因吗?是否会有一种情况下,您将实际使用一个助手,为您提供迭代的数组?我是新手。我正在节点应用程序中使用。我的理解是helpers的一个用例是将信息(例如数组)从服务器传递到客户端。