2016-06-21 9 views
0

PFB der Code meines benutzerdefinierten Filters, wo es einen Parameter viewbookoption, der ein Dropdown-Wert ist. Basierend auf dem Dropdown-Wert werden die Daten im Grid angezeigt.Ich implementierte forEach Schleife hier, aber es funktioniert nicht richtig und es durchläuft die Schleife und gibt mir fast 10000 Datensätze, aber eigentlich habe ich nur 10 Datensätze, die sein sollten im Raster angezeigt.Angular.forEach Schleife funktioniert nicht richtig

Jede Hilfe in dieser Hinsicht wird sehr geschätzt.

Controllers.filter('filterUnissued', function() { 
    return function(books, viewbookoption) { 
     if (viewbookoption == "All Books") { 
     return books; 
     } else { 
     angular.forEach(books, function(book) { 
      if (book.issued == false) { 
      books.push(book); 
      } 
     }); 
     } 
     return books; 
    } 
}); 
+0

Sie wiederholen dasselbe Array, in das Sie drängen – charlietfl

+0

Yeah !! Mein schlechtes .. Danksagung –

Antwort

3

Sie drängen Elemente auf den vorhandenen books Array. Stattdessen sollten Sie ein neues Array erstellen und darauf klicken. Wie folgt aus:

var filteredBooks = [] 
angular.forEach(books, function(book) { 
    if (book.issued == false) { 
    filteredBooks.push(book); 
    } 
}); 
return filteredBooks; 

Oder besser, verwenden Sie die Array.filter.prototype Methode:

return books.filter(function(book) { 
    return book.issued === false; 
}); 

(Verwenden Sie auch immer === statt ==, wenn Sie einen sehr guten Grund haben, zu verwenden == .)

+0

Vielen Dank Andrew! Es hat mein Problem gelöst. –

+0

Kein Problem! Willkommen bei Stackoverflow. Ich hoffe, Sie finden es hier nützlich. –