2016-11-23 205 views
1

我有一個過濾器:角JS過濾器2值?

angular.module('pb.ds.foundation').filter('notAvailable', function() { 
    return function (items, name) { 
    var arrayToReturn = []; 

    for (var i = 0; i < items.length; i++) { 
     if (items[i].code !== name) { 
     arrayToReturn.push(items[i]); 
     } 
    } 

    return arrayToReturn; 
    }; 
}); 

我寫了從一個NG重複篩選出一個給定的項目:

ng-repeat="nio in icons.nucleoIcons | notAvailable: 'arrows-2_time'"

但是現在,我想篩選第二個圖標(字符串)從我的中繼器。是否需要再次使用新值對同一過濾器進行管道傳輸,或者是否有辦法通過過濾器1 或更多值?

+0

您可以在ng-repeat中使用多個過濾器。看到這個網頁:http://stackoverflow.com/questions/14126905/ng-repeat-with-multiple-filters-on-large-data-set – rrd

+0

我知道我可以(和有)使用多個過濾器,但從來沒有與_same_篩選兩次。 – Steve

+0

它似乎工作,但是,「正確」的方式? – Steve

回答

1

有幾種方法可以完成此操作。您可以像過去一樣將字符串傳遞給過濾器,但也可以傳遞數組或範圍變量。

這是一個plnk,它的過濾器已更新爲接受字符串,數組或範圍變量。

angular.module('app', []) 
.filter('notAvailable', function() { 
    return function (items, name) { 
    var arrayToReturn = []; 

    if (Array.isArray(name)) { 
     for (var i = 0; i < items.length; i++) { 
     if (name.indexOf(items[i].code) === -1) { 
      arrayToReturn.push(items[i]); 
     } 
     } 
    } else { 
     for (var i = 0; i < items.length; i++) { 
     if (items[i].code !== name) { 
      arrayToReturn.push(items[i]); 
     } 
     } 
    } 

    return arrayToReturn; 
    }; 
})