如何在angularjs中迭代对象的内部数组?

时间:2015-10-30 09:41:23

标签: angularjs

$scope.radiolabels={
                Name:"",
                type:"radiobtns",
                rbtn:[{
                          Name:"",
                          order:$scope.order
                      }]
                    };

如何迭代objct及其rbtn.I意味着在第一个div中我们必须迭代对象并在第一个div内部我们需要迭代rbtn。我试过如下。

<ul>


    <li ng-repeat="radiolbs in radiolabels track by $index">
                        RadioButtons {{$index}}: <input type="text" id="ral_{{$index}}" data-ng-model="$parent.radiolabels[$index].Name"/><br>

                                     <div ng-repeat="r in radiolabels.rbtn track by $index">
                                        Option {{$index}}<input type="text" id="rab_{{$index}}"><br>
                                        Option {{$index}}<input type="text" id="rab_{{$index}}"><button class="btn btn-default">+</button>
                                    </div>
                </li>
          </ul>

它不起作用

2 个答案:

答案 0 :(得分:1)

您正在尝试迭代外部循环中的对象。这不起作用,因为你的对象不在数组中。

对数组进行迭代将为您提供$index变量,否则您只需迭代键/值对。

您可能希望将外部对象包装在数组中。

$scope.radiolabels = [{
  Name: "",
  type: "radiobtns",
  rbtn: [{
    Name: "",
    order: $scope.order
  }]
}];

然后可以通过询问当前迭代对象的属性来修复内循环的逻辑。

<ul>
  <li ng-repeat="radiolbs in radiolabels track by $index">
    RadioButtons {{$index}}:
    <input type="text" id="ral_{{$index}}" data-ng-model="radiolbs.Name"/><br>

    <div ng-repeat="r in radiolbs.rbtn track by $index">
      Option {{$index}}<input type="text" id="rab_{{$index}}"><br>
      Option {{$index}}<input type="text" id="rab_{{$index}}">
      <button class="btn btn-default">+</button>
    </div>
  </li>
</ul>

答案 1 :(得分:0)

您可以尝试ng-init。像:

<ul>
<li ng-repeat="radiolbs in radiolabels" ng-init="dataIndex = $index">
   RadioButtons {{dataIndex }}: <input type="text" id="ral_{{dataIndex}}" data-ng-model="$parent.radiolabels[dataIndex ].Name"/><br> 
</ul>