【问题标题】:Ng-click and ng-show AngularJSng-click 和 ng-show AngularJS
【发布时间】:2016-10-28 19:59:03
【问题描述】:

我有一个字典列表,我想切换显示每个教室的所有学生及其详细信息。

这是 HTML:

<div ng-app="myApp" ng-controller="myCtrl">

<div class="classrooms-details" ng-show="Students">
    <table class="table table-striped">
        <thead>
         <tr>
          <th>First name</th>
          <th>Last name</th>
          <th>Gender</th>
          <th>Birthday</th>
         </tr>
         </thead>
         <tbody>
     <tr ng-repeat="classroom in classrooms">
       <td>{{classroom.student.first_name}}</a></td>
       <td>{{classroom.student.last_name}}</td>
       <td>{{classroom.student.gender}}</td>
       <td>{{classroom.student.birthday}}</td>
      </tr>
     </tbody>
     </table>
</div>

<table class="table table-striped">
    <thead>
     <tr>
      <th>Classroom</th>
      <th>School</th>
      <th>Academic year</th>
     </tr>
     </thead>
     <tbody>
     <tr ng-repeat="classroom in classrooms">
       <td><a href="#" ng-click="showStudents">{{classroom.classroom}}</a></td>
       <td>{{classroom.school.school_name}}</td>
       <td>{{classroom.academic_year}}</td>
      </tr>
     </tbody>
   </table>

</div>

我尝试使用 ng-click/ng-show,但它不起作用。

这是脚本:

var app = angular.module("myApp", []);

app.controller("myCtrl", function($scope) {
    $scope.classrooms = [{
        "school": {
            "id": 1,
            "school_name": "IPSIA F. Lampertico",
            "address": "Viale Giangiorgio Trissino, 30",
            "city": "Vicenza"
        },
        "academic_year": "2015/2016",
        "classroom": "1^A",
        "floor": 0,
        "students": [{
            "classroom": 1,
            "first_name": "Stefano",
            "last_name": "Rossi",
            "gender": "M",
            "birthday": "1998-06-22"
        }, {
            "classroom": 1,
            "first_name": "Luca",
            "last_name": "Possanzini",
            "gender": "M",
            "birthday": "1999-11-22"
        }]
    }, {
        "school": {
            "id": 2,
            "school_name": "ITIS A. Rossi",
            "address": "Via Legione Gallieno, 52",
            "city": "Vicenza"
        },
        "academic_year": "2015/2016",
        "classroom": "2^B",
        "floor": 0,
        "students": [{
            "classroom": 2,
            "first_name": "Sergio",
            "last_name": "Lazzari",
            "gender": "M",
            "birthday": "2001-01-29"
        }]
    }];
    console.log($scope.classrooms);
});

我不知道如何访问“学生”值,我希望仅在单击教室名称时显示学生详细信息。

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript html arrays json angularjs


    【解决方案1】:

    您只需将特定教室设置为“活动”教室并显示其中的学生。最简单的方法是:

    查看

    <tr ng-if="activeClassroom" ng-repeat="student in activeClassroom.students">
      <td>{{student.first_name}}</a></td>
      <td>{{student.last_name}}</td>
      <td>{{student.gender}}</td>
      <td>{{student.birthday}}</td>
    </tr>
    

    ...

    <tr ng-repeat="classroom in classrooms">
      <td><a href="#" ng-click="setActiveClassroom(classroom)">{{classroom.classroom}}</a></td>
      <td>{{classroom.school.school_name}}</td>
      <td>{{classroom.academic_year}}</td>
    </tr>
    

    控制器

    $scope.activeClassroom = null;
    
    $scope.setActiveClassroom = function (classroom) {
      $scope.activeClassroom = classroom;
    };
    

    【讨论】:

    • 很好的答案!谢谢你:)
    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多