Подтвердить что ты не робот

Обратная полярность фильтра angular.js

Учитывая метод фильтра, который возвращает true, если выполняется какое-либо условие, можно ли вызвать его обратное в HTML, например. использовать:

"item in items | filter:!AllDay"

вместо

"item in items | filter:AllDay"

? Или вам нужно поддерживать два отдельных метода фильтрации (один для false и один для true)?

4b9b3361

Ответ 1

Как отмечено ENDOH (этот вопрос SO является технически дубликатом), вы можете отменить фильтр, добавив '!' к строке фильтра, например:

filter:'!'+myFilter

Обратите внимание, что '!' цитируется. документация не очень понятна, и пример был бы полезен.

Ответ 2

Ответ shacker не работает для angular 1.0.7, поэтому здесь другой способ сделать это:

// You can register this in your AppCtrl if you like, otherwise just use $scope.
$rootScope.not = function(func) {
    return function (item) { 
        return !func(item); 
    }
};

Тогда вы сделаете следующее:

filter:not(myFilterMethod)

Ответ 3

filter:({day: '!'+AllDay.day})