在将Angular更新为1.3之前,我使用的是Angular 1.2。
我正在使用此筛选器筛选我的类别列表。它所做的是删除一个与(我)中传递的内容重复的类别。
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错误。我不知道发生了什么。
编辑:添加Plnkrhttp://plnkr.co/edit/X2cAvRyd3pdjMDOOQKfI?p=preview
它在Plnkr代码中似乎工作得很好,但仍然会从控制台中得到Infdig错误。尝试比较AngularJS的1.2.13和1.3.13中的代码。
1.3.13抛出了一堆输入错误。
这个答案提供了一些很酷的过滤器。如果你正在进行大量过滤,那么导入这些库就足够容易了。
我制造了一把小提琴来解决你的问题。
或者编辑你的plunkerhttp://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 );
});
};
});