2016-07-19 15 views
0

Ich möchte Paginierung auf die gefilterten Ergebnisse des Objekts ng-repeat implementieren. Da eine Syntaxregel nur auf das Ende angewendet werden kann, kann ich die korrekte Anzahl der Repeater-Objekte nicht ermitteln.kann nicht gefiltert werden Anzahl der ng-repeat-Objekt mit Seitennummerierung

<md-card class="blur-box"> 
    <md-input-container> 
     <label>Search</label> 
     <input ng-change="updated()" type="text" ng-model="search" md-maxlength="10"> 
    </md-input-container> 
    <md-table-container> 
     <table md-table md-row-select multiple ng-model="selected"> 
      <thead md-head md-order="query.order"> 
       <!-- <tr>{{query.order}}</tr> --> 
       <tr md-row> 
        <th md-column md-numeric md-order-by="key">Roll Number</th> 
        <th md-column md-order-by="value.firstName">firstName</th> 
        <th md-column md-order-by="value.lastName">lastName</th> 
        <th md-column md-order-by="value.email">email</th> 
        <th md-column md-order-by="value.dob">dob</th> 
        <th md-column md-order-by="value.college">college</th> 
        <th md-column md-order-by="value.course">course</th> 
        <th md-column md-order-by="value.status">status</th> 
        <th md-column md-order-by="value.note">note</th> 
       </tr> 
      </thead> 
      <tbody md-body> 
       <tr md-row md-select="student" md-select-id="key" ng-repeat="student in students | filter: search | orderBy: query.order | limitTo: query.limit : (query.page -1) * query.limit as fStudents"> 
        <td md-cell>{{student.key}}</td> 
        <td md-cell>{{student.value.firstName}}</td> 
        <td md-cell>{{student.value.lastName}}</td> 
        <td md-cell>{{student.value.email}}</td> 
        <td md-cell>{{student.value.dob}}</td> 
        <td md-cell>{{student.value.college}}</td> 
        <td md-cell>{{student.value.course}}</td> 
        <td md-cell>{{student.value.status}}</td> 
        <td md-cell>{{student.value.note}}</td> 
       </tr> 
      </tbody> 
     </table> 
    </md-table-container> 
    <md-table-pagination md-limit="query.limit" md-limit-options="limitOptions" md-page="query.page" md-total="{{fStudents.length}}" md-page-select="true" md-on-paginate="logPagination"></md-table-pagination> 
</md-card> 

Zum Beispiel in oben genannten Code habe ich etwa 27 Objekte zunächst. Aber wegen der Paginierung der Count ({{fStudents.length}}) immer 5 sagen, es sei denn, die object.length ist kleiner als 5.

Brauchen Sie Hilfe, um dies zu beheben.

Antwort

0

Sie müssen filterResult verwenden. Ändern Sie Ihre ng-Wiederholung:

ng-repeat="student in (filterResult = (students | filter: search | orderBy: query.order | limitTo: query.limit : (query.page -1) * query.limit as fStudents))" 

Dann ändern Sie die md-Summe:

md-total="{{search ? filterResult.length : fStudents.length}}"