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

Mikado模板引擎嵌套数组循环实现及数据访问问题求助

我完全懂你从Mustache.js转去Mikado时遇到的糟心情况——本来以为是近亲迁移,结果嵌套数组这块直接卡壳,官方文档又没讲清楚细节。别着急,下面给你梳理清楚Mikado里处理嵌套数据的正确姿势:

首先解决嵌套数据访问的问题

你之前尝试的{{data.textuals_section.textuals.textual_h}}写法不对,主要是两个原因:

  • Mikado模板的上下文默认就是你传入的根数据,不需要加data.前缀
  • 对于数组里的嵌套属性,不能直接通过链式路径一次性访问到单个元素的属性(除非你明确指定数组下标,比如{{textuals_section.textuals[0].textual_h}})

正确的单元素访问方式应该是:

<!-- 访问第一个textual的textual_h属性 -->
{{textuals_section.textuals[0].textual_h}}

然后是嵌套数组的循环遍历

Mikado用{{for}}指令来处理数组循环,而不是Mustache的{{#}}(Mikado里{{#}}是用来引用HTML片段的)。对于嵌套数组,只需要嵌套使用{{for}}指令就能实现多层遍历。

假设你的数据结构是这样:

const appData = {
  textuals_section: {
    section_title: "我的文本区块",
    textuals: [
      { textual_h: "标题1", content: "内容1" },
      { textual_h: "标题2", content: "内容2" }
    ]
  }
};

对应的Mikado模板写法应该是:

<!-- 先渲染外层区块标题 -->
<h2>{{textuals_section.section_title}}</h2>
<!-- 遍历嵌套的textuals数组 -->
{{for textuals_section.textuals as textItem}}
  <div class="text-item">
    <!-- 直接通过别名访问当前项的属性 -->
    <h3>{{textItem.textual_h}}</h3>
    <p>{{textItem.content}}</p>
  </div>
{{/for}}

如果你的外层还有数组(比如多个section),嵌套循环的写法类似:

{{for sections as section}}
  <h2>{{section.section_title}}</h2>
  {{for section.textuals as textItem}}
    <div class="text-item">
      <h3>{{textItem.textual_h}}</h3>
      <p>{{textItem.content}}</p>
    </div>
  {{/for}}
{{/for}}

额外注意事项

  • 初始化Mikado实例时,确保你传入了完整的嵌套数据结构
  • 如果数据是动态更新的,记得调用Mikado实例的update()方法来触发视图更新
  • 可以用{{log textItem}}在模板里打印当前上下文,方便调试数据结构

这样写应该就能解决你遇到的嵌套数组循环和数据访问问题了,你可以把这个逻辑套用到你的示例里试试~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:33:05