如何使用把手 (hbs) 迭代嵌套数组和对象?

Posted

技术标签:

【中文标题】如何使用把手 (hbs) 迭代嵌套数组和对象?【英文标题】:How to iterate nested array and objects using handlebars (hbs)? 【发布时间】:2021-09-30 18:44:03 【问题描述】:

我正在从 JSON 迭代嵌套数组。对象嵌套在几个级别中。我需要从image_groups 属性中的第二个数组中获取第一个图像。到目前为止,我已经设法到达 link 属性,但我无法选择我需要的唯一一个特定链接,而不是数组中的所有图像链接。

代码:

<div class="col-md-4">
   #each image_groups~
   #each images~
   <h6>title</h6>
   <img src="../images/link" >
   /each
   /each
</div>

JSON 的屏幕截图:

它在浏览器中的显示方式:

【问题讨论】:

我不确定“我需要的唯一一个特定链接”是什么意思。每张图片看起来只有一个 link,所以它可能是您想要定位的 images 数组中的一张图片? @76484,你是对的!我只想定位一个链接。我只想在页面上显示一张图片。 你需要表达一些逻辑来确定每个images数组中的哪个图像是你的目标。是第一个吗?最后?你想要哪张图片? 【参考方案1】:

最后,我设法找到了解决方案。我应该跳出 each 循环并绑定下一个字符串:

<img
 src="../images/image_groups.0.images.0.link"
 
>

【讨论】:

这不是一个非常明确的答案。你还在使用#each image_groups~ 循环吗? 不,我不应该进入 #each image_groups~ 循环。抱歉,答案不清楚。【参考方案2】:

恭喜您解决了问题!

我想提出一个替代解决方案,我认为它可以使模板更简洁。

由于我们已经确定我们不再需要任何#each 循环,因为我们只在第一个图像组的第一张图像之后,我们可以看到我们只剩下&lt;h6&gt;&lt;img&gt; 标记。这两个标签要填充的值都来自我们的目标图像对象。

我建议使用 Handlebars 的#with built-in helper。这个帮助器允许我们为模板的一部分设置数据上下文。将上下文设置为我们的目标图像对象将使我们免于重写其长路径,从而使我们能够简单而干净地访问其属性,例如title

带有#with 的最终模板是:

<div class="col-md-4">
  #with image_groups.[0].images.[0]
    <h6>title</h6>
    <img
      
      src="link"
    >
  /with
</div>

我创建了一个fiddle 供您参考。

【讨论】:

以上是关于如何使用把手 (hbs) 迭代嵌套数组和对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何迭代嵌套的 JSON 对象 [重复]

如何在嵌套数组(数组中的数组)上使用 v-for 指令进行迭代

如何让两个嵌套的 Parfors 在 Matlab 中迭代两个巨大的数组?

如何使用带有对象数组的把手显示表格

如何在 REACT JS API 调用中迭代 JSON 嵌套数组?

如何迭代嵌套数组?