I believe you can specify the property you want to filter by like this:
<tr ng-repeat="student in studentData | filter : {fullName: searchText}">
However, keep in mind that this will be an exact text match, including casing "Joe" is not equal to "joe".
The above will work, but IMO it's not the best solution. Below is my recommendation
Change the HTML to point at a new array of data:
<input type="text" ng-model="searchText" placeholder="Search for a pupil..." />
<tr ng-repeat="student in filteredStudentData">
And in your controller:
$scope.searchText = ''; //start as an empty string
$scope.studentData = [ ... ]; //your real data goes in here
$scope.filteredStudentData = []; // start as an empty array
//Watch the `searchText` property for changes
$scope.$watch('searchText ', function(newValue, oldValue){
//remove whitespace, and make it all lowercase - note the `.trim()` only works on IE 9+
var normalizedSearchText = (newValue || '').toLowerCase().trim();
//Now only include the relevant results in the `filteredStudentData` array
//note that the `.filter()` method is only available on IE9+
$scope.filteredStudentData = $scope.studentData.filter(function (student) {
return
normalizedSearchText === student.fullName.toLowerCase().trim() ||
normalizedSearchText === student.someOtherProperty.toLowerCase().trim() ||
normalizedSearchText === student.anotherExampleProperty.toLowerCase().trim();
});
});