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

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

"item in items | filter:!AllDay"

вместо

"item in items | filter:AllDay"

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

 Mark Rajcok20 нояб. 2012 г., 17:54
 shacker20 нояб. 2012 г., 19:16
Спасибо Марк - да, ответ есть.

Ответы на вопрос(3)

Решение Вопроса

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

filter:'!'+myFilter

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

 Daniel Baughman05 июл. 2016 г., 23:58
если значение для myFilter равно 2, это будет блокировать 2, 22, 202, 102 и т. д. Я нене вижу, как вы можете это исправить без написания функции.
 pulkitsinghal29 мая 2015 г., 02:52
это было очень полезно, для фильтрации на основе свойств вместо строк, это заняло немного времени Ошибка, чтобы выяснить:filter:{myPropertyName:'!'+'EverythingOtherThanMe'}
 Denis Pshenov23 июл. 2013 г., 14:01
Когда myFilter - это метод, а не модель, это не работает на Angular 1.0.7. Метод myFilter не вызывается вообще.
 Alexander Marquardt11 дек. 2014 г., 06:06
Хороший указатель о '!' меня цитируют - это озадачило меня на несколько минут (и выглядит задним числом)
 chirag satapara18 июл. 2017 г., 08:08
@shacker, проверь эту скрипкуhttp://jsfiddle.net/U3pVM/33383/ почему последний не отображается в списке, последний идентификатор события - -12, а не -1 ??

shacker»ответ нет работает на угловой 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)
 Mario Levrero24 янв. 2014 г., 10:50
Это правильный ответ для версии 1.2.9
 TWiStErRob03 дек. 2017 г., 18:38
Если у вас есть lodash или подчеркивание, вы также можете сделать$rootScope.not = _.negate; с пользой, что это работает, еслиfunc имеет несколько аргументов.
 Matthew Tschiegg06 авг. 2015 г., 18:36
Это был лучший ответ для меня в угловых 1,3
 bbodenmiller19 нояб. 2016 г., 10:32
Подробная информация о том, как добавить в $ rootScope наstackoverflow.com/questions/18880737/....
filter:({day: '!'+AllDay.day})
 mrjrdnthms20 июл. 2015 г., 23:58
В другом посте SO я читал, что этот синтаксис также работает: filter:! {Day: AllDay.day} Но это не такт для меня. Это был единственный способ, который работал.

Ваш ответ на вопрос