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

Handlebars each循环中无法渲染外部result对象属性的技术问题

问题分析与解决方案

你遇到的核心问题是Handlebars循环时的上下文切换导致无法访问外部result对象:当进入{{#each sem}}循环块后,模板的上下文会自动切换为当前迭代的sem对象(也就是每个包含semNumber和collegeName的项),此时直接写{{result.href}}会在当前sem对象里查找result属性,自然找不到对应值。

下面给你两种可靠的解决方法,同时满足URL中嵌入semNumber的需求:

方法1:使用../访问父级上下文

../在Handlebars中代表「上一级上下文」,在each循环里用它就能拿到根级的result对象:

{{#each sem}}
  <div>{{semNumber}}</div>
  <div>{{collegeName}}</div>
  <!-- 用../访问根级的result,同时嵌入当前sem的semNumber到URL -->
  <a href="/marks/edit_marks/semester_number={{semNumber}}/{{../id}}">{{../result.content}}</a>
{{/each}}

注:这里假设id是根级上下文的属性,如果id是当前sem对象自带的属性,直接写{{id}}即可。

方法2:使用@root直接访问根级上下文

如果模板嵌套较深,../可能会因为层级关系变得混乱,用@root可以明确指向最顶层的上下文,写法更清晰:

{{#each sem}}
  <div>{{semNumber}}</div>
  <div>{{collegeName}}</div>
  <!-- 用@root直接指定根级的result和id -->
  <a href="/marks/edit_marks/semester_number={{semNumber}}/{{@root.id}}">{{@root.result.content}}</a>
{{/each}}

预期渲染效果

两种写法最终都会输出你想要的结果(假设id值为123):

<div>2</div>
<div>blalblalbla</div>
<a href="/marks/edit_marks/semester_number=2/123">Some text</a>

<div>3</div>
<div>dfhgfh</div>
<a href="/marks/edit_marks/semester_number=3/123">Some text</a>

<div>4</div>
<div>dsfdsdsf</div>
<a href="/marks/edit_marks/semester_number=4/123">Some text</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:26:31