Angular 属性(变量)在视图中的使用

Angular properties (variables) use in the view

我有学校名单和教师名单。

学校

    [
    {
    "id": 1,
    "nameOfInstitution": "Summer Elementary",
    "schoolLevel": "01304"
    },
    {
    "id": 2,
    "nameOfInstitution": "Grady Middle",
    "schoolLevel": "02400"
    }
    ]

教师

[
{
  "id": "1",
  "school": "1",
  "name": {
    "lastOrSurname": "HARRISON",
    "firstName": "JOHN",
    "middleName": ""
  }
},
{
  "id": "2",
  "school": "1",
  "name": {
    "lastOrSurname": "Nelson",
    "firstName": "Darren",
    "middleName": ""
  }
},
{
  "id": "3",
  "school": "2",
  "name": {
    "lastOrSurname": "Stewart",
    "firstName": "Manuel",
    "middleName": ""
  }
}]

在我的控制器中 ...

$scope.schools = schools;
$scope.teachers = teachers;

问题与视图有关。我怎样才能做到这一点?

我一直在使用 "ng-repeat" 指令,但如何才能只显示属于每个学校的教师?

谢谢!

您可以在 ng-repeat 中过滤教师:

<div ng-repeat="school in schools">
  <div ng-repeat="teacher in teachers | filter: {school: school.id}">

但请务必为每个教师使用的学校添加 id 属性。

或者如果 teacher.school 属性是学校数组中的学校索引,您可以这样做:

<div ng-repeat="school in schools">
  <div ng-repeat="teacher in teachers | filter: {school: $index}">

最后一点:这会奏效,但如果你有很多学校和老师,在显示它之前从 javascript 执行过滤会更高效,即构建一个像 [=15= 这样的结构]

schools = [{
  nameOfInstitution: ...,
  schoolLevel: ...,
  teachers: [{
    lastOrSurname: ...
  }]
  // ... etc
}];

使用过滤器:

<div ng-repeat="school in schools">
  {{school.nameOfInstitution}}
<p ng-repeat="teacher in teachers | filter:{school: ''+ ($index+1)}:true">
  {{teacher.name.lastOrSurname}}
</p>
</div>

但是你最好有一些学校的身份证...