You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Handlebars访问auditItems中可变索引位置的rule_id元素问题咨询

解决Handlebars中访问可变索引位置的rule_id问题

嘿,这个问题我之前也碰到过!Handlebars的模板语法在处理动态索引/键的时候确实有点绕,不过有两种常用的解决办法,取决于你的auditItems到底是数组还是键为1-20的对象:

1. 如果auditItems是数组(索引0-based)

Handlebars内置了一个lookup助手,专门用来根据动态索引获取数组元素。不过要注意:数组的索引是从0开始的,而你的目标索引是1-20,所以需要先把索引值减1(如果后台没做处理的话)。

假设你有一个变量targetIndex存储着1-20的目标位置,写法如下:

{{#each audits}}
  {{! 先通过lookup拿到对应位置的元素,再取rule_id }}
  {{(lookup this.order.auditItems (sub targetIndex 1)).rule_id}}
{{/each}}

注:sub是一个减法自定义助手,如果你的项目里没有自带,可以自己简单实现一个:

Handlebars.registerHelper('sub', function(a, b) {
  return a - b;
});

如果不想写自定义助手,也可以在传入模板前,把目标索引提前转换成0-based的数值,这样直接用lookup就行。

2. 如果auditItems是对象(键为1-20的数字/字符串)

这种情况更简单,Handlebars支持直接用[动态变量名]的语法访问对象的动态键:

{{#each audits}}
  {{! yourDynamicIndexVariable就是存储1-20的变量 }}
  {{this.order.auditItems.[yourDynamicIndexVariable].rule_id}}
{{/each}}

如果每个audit项本身就带有对应的目标索引(比如每个audit里有个itemId字段存着1-20的值),那可以直接用当前上下文的属性:

{{#each audits as |audit|}}
  {{audit.order.auditItems.[audit.itemId].rule_id}}
{{/each}}

小提示

如果不确定auditItems的结构,可以先在模板里用{{log this.order.auditItems}}打印出来,看看是数组还是键值对对象,再选对应的写法~

内容的提问来源于stack exchange,提问作者imatiasmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 15:57:28