[英]Filtering ng-options
在將Angular更新到1.3之前,我使用的是Angular 1.2。
我正在使用此過濾器過濾類別列表。 它所做的是刪除一個類別,該類別與(me)中傳入的內容重復。
app.filter('CategorySelectFilter', function() {
return function(cats, me) {
var filteredCats = angular.copy(cats);
for (var index in filteredCats) {
if (me.id == filteredCats[index].id) {
filteredCats.splice(index, 1);
}
}
return filteredCats;
};
});
在我的HTML中使用此功能,一切正常。
ng-options="c as c.name for cat in filtered = (cats | CategorySelectFilter: cat) track by cat.id"
更新到Angular 1.3之后,我開始從中收到Infdig錯誤。 我不知道發生了什么。
編輯:添加了Plnkr http://plnkr.co/edit/X2cAvRyd3pdjMDOOQKfI?p=preview
在Plnkr代碼中似乎可以正常工作,但仍會從控制台收到Infdig錯誤。 嘗試比較AngularJS的1.2.13和1.3.13中的代碼。
1.3.13會引發大量入侵錯誤。
此答案提供了一些很酷的過濾器供您查看 。 如果您要進行大量過濾,也許導入這些庫很容易。
或編輯您的監聽器http://plnkr.co/edit/AI1O9Z?p=preview
這是如何使用它。
ng-repeat="cat in cats | catFilter:'id' "
和過濾器。
app.filter('catFilter', function() {
return function(cats, key ) {
return cats.filter( function(elem, index, array ) {
return ( array.map(function(item){return item[key];}).indexOf(elem[key]) === index );
});
};
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.