【问题标题】:Filtering ng-options过滤 ng-options
【发布时间】:2015-02-27 16:45:41
【问题描述】:

在将 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 错误。

【问题讨论】:

  • 你能发个 plnker 吗?
  • 那么,您是在尝试从数组中删除所有重复项吗?
  • 我正在尝试组合一个 plnker,我正在做的是,我有一个名为猫的集合,并且我正在使用 ng-repeat。然后我会检查猫中的每个项目,并给它一个我从中删除的 ng-options 列表。

标签: javascript angularjs


【解决方案1】:

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

I created a fiddle to solve your issue.

或编辑你的 plunker 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 );
        });

    };
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多