如何为ng-repeat设置条件

时间:2015-06-08 07:42:59

标签: angularjs

我正在使用以下ng-repeat声明。

是否可以将签入外ng-repeat表示只创建此行 学生姓名(当前迭代)与之前的学生(前一次迭代)不同,例如继续下一个ng-repeat为当前行创建其他单元格。

我想知道外ng-repeat条件是否错误,而不是它是否转到内ng-repeat

之前,建议更改数据结构,我想有人请告诉我是否可以从前端获取?

<tr ng-repeat="student in students">
    <td style="text-align: left;" width="296;">{{student.FirstName}} {{student.LastName}} <small class="" style="color: #999999;">({{student.Role}})</small></td>
    <td width="100px" ng-repeat="subject in student.subject">
    <input ng-disabled="!subject.Enrolled" ng-change="savestudentSubject(subject, student)" ng-model="student.Checked" type="checkbox"></td>
</tr>

1 个答案:

答案 0 :(得分:1)

我认为你想要的只是以下内容:

<tr ng-repeat="student in students">
    <td style="text-align: left;" width="296;">
        <!-- Check if same student -->
        <span ng-if="students[$index - 1].id != student.id">
            {{student.FirstName}} {{student.LastName}} <small class="" style="color: #999999;">({{student.Role}})</small>
        </span>
    </td>
    <td width="100px" ng-repeat="subject in student.subject">
    <input ng-disabled="!subject.Enrolled" ng-change="savestudentSubject(subject, student)" ng-model="student.Checked" type="checkbox"></td>
</tr>

检查当前学生是否与前一个学生相同。如果是,则不显示名称,但会显示主题。

或者,你可以使用&#39; groupBy&#39;使用'angular-filter' module对学生进行分组,例如使用相同的ID:

<tr ng-repeat="(key, student) in students | groupBy: 'id'">
    <td style="text-align: left;" width="296;">{{ student.FirstName }} {{student.LastName}} <small class="" style="color: #999999;">({{student.Role}})</small></td>
    <td width="100px" ng-repeat="subject in student.subject">
    <input ng-disabled="!subject.Enrolled" ng-change="savestudentSubject(subject, student)" ng-model="student.Checked" type="checkbox"></td>
</tr>

JSBIN(对于ng-repeat-start和-end有点hacky,可能会做得更好)