嵌套的Ng-repeat与ng-if传递正确的$ index

时间:2018-02-26 19:29:29

标签: angularjs

我有ng-repeat嵌套ng-if,每个ng-if内有一个包含ng-click函数的复选框。我想通过函数传递嵌套的ng-repeat' $index值。

这是我的代码。

<div class="student" ng-repeat="student in studentDetails.childNumber track by $index" ng-init=" studentnumber = $index">
  <div ng-repeat="grmnt in student.garmentNumber track by $index" ng-init="grmntidex = $index" ng-if="grmnt.gurmentType === 'shirt'">
    <div ng-click="garmentOpen = !garmentOpen;" class="z-depth-1 garmentelement">Garment</div>
    <div class="garmentHeader" ng-if="garmentOpen">
      <div class="garmentBody">
        <div class="row">
          <p class="col s6 center-align">
            <input type="checkbox" id="BrandMeasurement" ng-click="msrmntSelector(grmnt)" />
            <label for="BrandMeasurement">Brand Measurement</label>
          </p>
          <p class="col s4 center-align">
            <input type="checkbox" id="BodyMeasurement" ng-click="msrmntSelector(grmnt)" />
            <label for="BodyMeasurement">Body Measurement</label>
          <div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

但问题是,当我选择最后一个grmnt元素时,它会通过id传递正确的服装,但是在选择了第一个元素后,它没有通过第二个或第三个或第四个任何一个服装。在每种情况下,它只传递第一个元素。

任何人都可以告诉我在哪里犯了任何错误(如果有的话)??

1 个答案:

答案 0 :(得分:0)

请勿在{{1​​}}上使用ng-if,只需使用ng-repeat中的过滤器。

ng-repeat

编辑:我想也许问题出现在你的标签上。标签的<div ng-repeat="grmnt in student.garmentNumber | filter:{gurmentType: 'shirt'} track by $index" ng-init="grmntidex = $index"> 属性需要唯一匹配输入的for属性。每行都需要自己的id / id对。使用for执行此操作。

$index