簡體   English   中英

過濾ng-options

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM