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

使用AngularJS ng-repeat遍历嵌套JSON构建数据表格的实现问题

解决方案

核心思路

你要实现的是行对应Web服务,列对应日期,单元格输出对应服务在对应日期的数值,可以利用数组索引对齐的特性完成绑定,不需要单独拆分resultsJx、listnqJx到独立scope变量。

第一步:修正JS数据定义的笔误

你原来的代码里定义数组用的变量名是table,后续赋值给self.tableau的时候变量名写错了,先修正:

// 原来的变量名table改为tableau
const tableau = [
  { day: "Day1" , webservices : [
    {ws: resultsJ1, tnq : listnqJ1 }
  ]},
  { day: "Day2", webservices : [
    {ws :resultsJ2, tnq : listnqJ2 }
  ]},
  { day: "Day3" , webservices : [
    {ws :resultsJ3, tnq : listnqJ3 }
  ]}
]
self.tableau = tableau
// 不需要再单独给$scope挂载resultsJ1、listnqJ1这类变量

第二步:修正HTML表格结构

你原来的代码存在td嵌套td的语法错误,同时重复写了resultsJ1、resultsJ2的循环,优化后代码如下:

<table cellpadding="20" rules="GROUPS" frame="BOX">
  <thead>
    <tr>
      <th>Web Service</th>
      <th style="width: 100px" ng-repeat="day in ctrl.tableau">
        {{day.day}} <!-- 你原来写的day.jour和数据字段不匹配,改为day.day -->
      </th>
    </tr>
  </thead>
  <tbody>
    <!-- 按服务数量循环生成行,$index对应当前是第几个服务 -->
    <tr class="xl153" ng-repeat="ws in ctrl.tableau[0].webservices[0].ws track by $index">
      <!-- 第一列输出服务名 -->
      <td>{{ws}}</td>
      <!-- 循环每一天,输出当前服务在当天的tnq值 -->
      <td style="width: 100px" class="xl153" ng-repeat="day in ctrl.tableau">
        {{day.webservices[0].tnq[$index]}}
      </td>
    </tr>
  </tbody>
</table>

注意事项

如果不同日期的Web服务数量不一致,建议提前统一数据长度,补全缺失的服务和对应数值,避免索引错位导致展示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:57:02