如何 select AnglujarJS ng-repeater 中的特定元素?

How to select a specific element in an AnglujarJS ng-repeater?

我是 Angular 的新手,所以我不确定 正确的方法是什么 来执行以下操作:我有一个中继器可以生成两个 [=每次迭代有 14=]tr 个元素。第二个 tr 元素最初是隐藏的。我想展示 单击第一个元素时的第二个 tr 元素。如何使用 Angular 执行此操作?

<tbody>
    <tr ng-repeat-start="student in students" ng-click="showDetails()">
        <td>{{ $index + 1 }}</td>
        <td>{{ student.name }}</td>
        <td>{{ student.age }} </td>
    </tr>
    <tr ng-repeat-end ng-hide="true">
        <td colspan="3">
            <!--  Detailed information goes here -->
        </td>
    </tr>
</tbody>

希望您已经设置好控制器。您的 $scope.showDetails 方法应该类似于:

$scope.showRow = [];
$scope.showDetails = function (idx) {
    $scope.showRow[idx] = true;
}

然后,将 ng-hide="true" 更改为 ng-hide="showRow"

<tbody>
    <tr ng-repeat-start="student in students" ng-click="showDetails($index)">
        <td>{{ $index + 1 }}</td>
        <td>{{ student.name }}</td>
        <td>{{ student.age }} </td>
    </tr>
    <tr ng-repeat-end ng-hide="showRow[$index]">
        <td colspan="3">
            <!--  Detailed information goes here -->
        </td>
    </tr>
</tbody>

编辑:使用@AviadP 建议的更改。这将考虑多个学生。

在controller里面写

$scope.hideRow = true;
$scope.showDetails = function () {
    $scope.hideRow = false;
}

并在 ng-hide

内添加 hideRow 范围
<tbody>
    <tr ng-repeat-start="student in students" ng-click="showDetails()">
        <td>{{ $index + 1 }}</td>
        <td>{{ student.name }}</td>
        <td>{{ student.age }} </td>
    </tr>
    <tr ng-repeat-end ng-hide="hideRow">
        <td colspan="3">
            <!--  Detailed information goes here -->
        </td>
    </tr>
</tbody>

请在此处查看我的演示:https://jsfiddle.net/4ggbog6u/

我为每个学生提供一个属性来决定是否显示细节

  $scope.showDetails = function(index) {
      $scope.students[index].detailOn = !$scope.students[index].detailOn;
  }

演示:https://jsfiddle.net/0yLk4znh/

修改了一些东西:

ng-hide 改为 ng-show

添加 showDetails 属性 学生

因此您可以隐藏所有元素,只显示所选行。