javascript - 过滤 ng-options

标签 javascript angularjs

在将 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 错误。我不知道发生了什么。

编辑:添加了 Plnkr http://plnkr.co/edit/X2cAvRyd3pdjMDOOQKfI?p=preview

它似乎在 Plnkr 代码中工作正常,但仍然从控制台收到 Infdig 错误。尝试比较 AngularJS 1.2.13 和 1.3.13 的代码。

1.3.13 抛出一堆 infdig 错误。

最佳答案

This answer provides some cool filters to look at 。如果您正在进行大量过滤,那么导入这些库可能很容易。

I created a fiddle to solve your issue.

或者编辑了你的骗子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 );
        });

    };
});

关于javascript - 过滤 ng-options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770078/

相关文章:

javascript - 如何获得已编译的指令来监听其范围之外的变量?

javascript - D3.JS 数据 map 国家名称变量

angularjs - 如何使用 Jasmine 为 Restangular 编写单元测试?

javascript - 使用 AngularJS 将 HTML 表格导出到 Excel

javascript - 查找过去 7 天当天的最后一份文件

javascript - AngularJS 无法加载模块

javascript - 如何使用 angularjs 从 jquery 中的主体中删除类

javascript - 将现有的 Div 放入 DOM div?

javascript - 将不同 <p> 内的所有数字相乘,然后将其相加

javascript - JSON 编码 Flask 到 Javascript