在子表达式中传递 'this'

Passing 'this' inside a subexpression

目前,我正在使用#each 助手来遍历数组。该数组用于传递信息,使用我的文档创建列表项

const categories = ['fruit', 'vegetables', 'dairy']

  {{#each categories}}
         <option value="{{this}}" {{optionSelected product.category (this) }}>{{this}}</option>
  {{/each}}

我正在使用 optionSelected 自定义助手来切换选项上的选定属性

hbs.handlebars.registerHelper('optionSelected', function (test, option) {
    return test === option ? 'selected' : '';
})

所写的代码不起作用。如果想将 product.category 与上面定义的类别数组的当前迭代进行比较,我该怎么做?

您确实需要说明 什么 上面的代码不起作用。

事实上,除了两点外,我觉得还不错:

  1. 当您在 #each 的上下文中时,没有 product 对象可以在其上查找 category,因此您需要使用通往更高评估上下文的路径, 比如 ../product.category.
  2. 无需将 this 括在括号中的 optionSelected 调用中。事实上,在我的测试中,括号似乎导致了编译器错误。

以下是完全有效的模板:

{{#each categories}}
    <option value="{{this}}" {{optionSelected ../product.category this}}>{{this}}</option>
{{/each}}

这里有一个fiddle供参考