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

如何利用嵌套ng-repeat结合外层$index动态设置节点数据?

解决嵌套ng-repeat动态生成node变量的问题

嘿,我明白你的需求啦——外层循环遍历ipList展示IP,内层循环要根据外层的$index来动态使用node0、node1这类命名的数组,替代原来固定的node,对吧?这里有两种靠谱的解决方案供你参考:

方案一:模板内动态获取(快速实现)

如果你不想改动太多控制器代码,可以直接在模板里利用$parent.$eval来动态拼接变量名,获取对应数组。注意要使用$parent来访问外层循环的$index,避免内层循环的$index干扰:

<div ng-repeat="ip in ipList track by $index">
  <div>
    <div class="box">
      <form action="">
        <table>
          <tbody>
            <!-- 动态拼接node+外层$index,获取对应的数组 -->
            <tr ng-repeat="n in $parent.$eval('node' + $parent.$index)">
              <td><input type="radio" name="column" /></td>
              <!-- 你的其他内容 -->
            </tr>
          </tbody>
        </table>
      </form>
    </div>
  </div>
</div>

方案二:控制器预处理(更优雅易维护)

从Angular的最佳实践来说,尽量避免在模板里写复杂的动态表达式,我们可以在控制器里把ipList和对应的nodeX数组关联起来,让模板逻辑更清晰:

控制器代码:

// 假设你已经定义了node0、node1、node2这些数组
$scope.node0 = ['选项1', '选项2', '选项3'];
$scope.node1 = ['选项A', '选项B', '选项C'];
$scope.node2 = ['选项X', '选项Y', '选项Z'];

// 把每个IP对应的node数组绑定到ip对象上
$scope.ipList.forEach(function(ip, index) {
  // 根据index获取对应的node数组,赋值给ip的nodes属性
  ip.nodes = $scope['node' + index];
});

修改后的模板:

<div ng-repeat="ip in ipList track by $index">
  <div>
    <div class="box">
      <form action="">
        <table>
          <tbody>
            <!-- 直接遍历ip绑定好的nodes数组即可 -->
            <tr ng-repeat="n in ip.nodes">
              <td><input type="radio" name="column" /></td>
              <!-- 你的其他内容 -->
            </tr>
          </tbody>
        </table>
      </form>
    </div>
  </div>
</div>

这个方案的好处是模板逻辑更简洁,后续维护的时候也更容易理解数据结构,推荐优先使用哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:00:27