根据MDN docs,<optgroup> 应该将其包装为<option>。
此外,由于 test 中的每个项目看起来都是一个字符串(您使用 {{this}} 作为标签值),您需要使用 ../test2 或@root notation 。这当然是假设这个数据结构:
{
test: ['category1', 'category2'],
test2: ['achievement1', 'achievement2', 'achievement3', 'achievement4']
}
但是,这种模式没有意义,对于test 中的每个项目,您会看到test2 的相同列表。因此,下面的代码将采用这种数据结构,其中每个类别都显示了它的具体成就:
{
test: [{
label: 'category1'
test2: ['achievement1', 'achievement2']
}, {
label: 'category2'
test2: ['achievement3', 'achievement4']
}]
}
代码:
<select>
{{#each test}}
<optgroup label="{{this.label}}">
{{#each test2}}
<option>{{this}}</option>
{{/each}}
</optgroup>
{{/each}}
</select>
简而言之,您:
1) 需要将<option> 包装在各自的<optgroup> 中
2) 需要修复:
a) 使用../test2 或@root/test2 的test2 列表访问范围(假设每个test 都是一个字符串)
或
b) 使用{{this.label}} 访问optgroup 标签的方式(假设每个test 是一个以label 和test2 为属性的对象)