Ziel weitergeben müssen:wollen ng-repeat Objekt angepasste Filterfunktion
Ein Benutzer in das Suchfeld eingeben sollte in der Lage, den Namen eines Kurses, und eine Liste von Studenten sehen, die auf dem registriert sind, Kurs.
Modelle:
course (has a course name and course code)
student (has a list of registered courses)
students (an array of student objects)
Methode:
ng-Repeat durch eine Liste von Studenten Objekte. Übergeben Sie für jedes Schülerobjekt Objekt an eine benutzerdefinierte Filterfunktion filterByCourse(byCourse, student)
.
Implementiert werden: filterByCourse-Funktion iteriert durch student.courses. Wenn ein Kurs mit dem gleichen Namen oder Code wie von Course gefunden wird, wird dieser zu einer Liste von filteredStudents hinzugefügt. Übergeben Sie die filteredStudents-Liste an die Stelle der ungefilterten Schülerliste.
Hier ist der Code:
<input class="form-control" type="text" ng-model="byCourse"
placeholder="Search by course id or course name..">
<ul ng-repeat="student in students | filter: filterByCourse(byCourse, student)">
<li ng-init="index=0; classes=['list--students_item', 'list--students_item--active']" ng-click="stageMeToCourse($index)"
ng-class="classes[index % classes.length]"
class="col-xs-24">
<img src="/img/profile_default.png">
<h4>{{ student.first_name }} {{ student.last_name }}
<span class="role">{{ student.role }}</span>
<i class="fa fa-chevron-right"></i>
</h4>
<p class="student_nr">{{ student._id }}</p>
</li>
</ul>
</div><!--list-students-->
Das Problem:
Wenn ich die Schüler Objekt in filterByCourse, ein console.log in der ersten Zeile passieren zeigt, dass Schüler nicht definiert ist, so Ich kann nicht durch die Kurse iterieren und gebe eine Liste von gefilterten Studenten zurück, wie ich möchte.
scope.filterByCourse = function(course, student){
console.log(student); //student is undefined
}
Dinge, die ich habe versucht:
Ich habe versucht, die Filterfunktion in der ng-repeat zu verwenden, um durch jeden Schüler Objekt Kursliste iterieren kann aber nicht herausfinden, wie man TU es.
Ich habe versucht, Dinge mit Hämmern zu schlagen.
Weiteres Problem:
Ich möchte nur die Ergebnisse auf diese Weise filtern, wenn der Benutzer eine Zeichenfolge in das Eingabefeld eingegeben hat. Wenn das Eingabefeld leer ist, sollte die Filterfunktion nicht ausgelöst werden. Ich habe keine Ahnung, wie ich das mache!
zeigen Sie bitte Ihre Filterfunktion, da wir kann nicht sehen, was los ist, ohne zu zeigen, wie Sie es implementiert haben.Vielleicht ist es sowieso besser, einen benutzerdefinierten Filter zu erstellen, anstatt eine Funktion mit der eingebauten Angular-Filterfunktion aufzurufen. –
@pkeuter die benutzerdefinierte Filterfunktion ist noch nicht implementiert. Alles, was es bis jetzt macht, ist console.log student, das nicht definiert ist, wenn die Funktion von veiw aufgerufen wird. Das ist das erste Problem:/ –
Ich verstehe, dass es noch nicht vollständig implementiert ist, aber Sie haben begonnen, es zu implementieren, und erhalten eine Fehlermeldung in dieser Funktion. Bitte zeigen Sie es, damit wir sehen können, was Sie hier vorhaben. –