PFB我的自定义过滤器的代码,其中参数viewbookoption
是一个下拉值。
基于下拉值,数据将显示在网格中。我在这里实现了每个循环,但它不能正常运行并且它保持遍历循环并且给我接近10000条记录但实际上我只有10条记录应该显示在网格中。
非常感谢这方面的任何帮助。
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 :(得分:3)
您正在将元素推送到现有的books
数组。相反,你应该创建一个新的数组并推进它。像这样:
var filteredBooks = []
angular.forEach(books, function(book) {
if (book.issued == false) {
filteredBooks.push(book);
}
});
return filteredBooks;
或者,更好的是,使用Array.filter.prototype
方法:
return books.filter(function(book) {
return book.issued === false;
});
(另外,总是使用===而不是==,除非你有充分的理由使用==。)