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

如何在Handlebars/EJS模板中用一个对象属性值作为另一个对象属性?

嘿,这个问题我熟!你在Handlebars里想用循环的当前值作为另一个对象的属性名,原来的嵌套{{}}写法确实行不通——Handlebars的模板语法不允许在表达式里再套一层{{}},直接写会触发语法错误。

我给你两种靠谱的解决办法,都能实现你要的Prices.a_CoinList_value.USD效果:

方法1:用Handlebars内置的lookup helper(推荐,兼容性更好)

Handlebars自带的lookup helper就是专门用来动态查找对象属性的,它接收两个参数:目标对象和要查找的属性名,返回对应的属性值。我们可以先用它拿到Prices中对应当前this的子对象,再链式访问USD属性:

{{#each CoinList}}
  <h4>{{(lookup Prices this).USD}}</h4>
{{/each}}

如果你的Handlebars版本不支持括号链式访问,也可以嵌套使用lookup来获取USD:

{{#each CoinList}}
  <h4>{{lookup (lookup Prices this) 'USD'}}</h4>
{{/each}}

方法2:直接使用方括号语法(适合新版本Handlebars)

如果你的Handlebars版本比较新(大概v4.0+),可以像原生JavaScript那样用方括号访问动态属性,写法更简洁:

{{#each CoinList}}
  <h4>{{Prices[this].USD}}</h4>
{{/each}}

举个实际的例子,假设你传入的数据是这样的:

const data = {
  CoinList: ['BTC', 'ETH', 'SOL'],
  Prices: {
    BTC: { USD: 32000 },
    ETH: { USD: 1800 },
    SOL: { USD: 90 }
  }
}

用上面的模板渲染后,就会生成三个<h4>标签,分别显示32000、1800和90,完全符合你的需求~

另外提醒一句:如果CoinList里可能存在Prices中没有的属性值,最好加个条件判断避免报错,比如:

{{#each CoinList}}
  {{#if (lookup Prices this)}}
    <h4>{{(lookup Prices this).USD}}</h4>
  {{else}}
    <h4>暂无价格数据</h4>
  {{/if}}
{{/each}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:54