Обратная полярность фильтра angular.js
Учитывая метод фильтра, который возвращает true, если выполняется какое-либо условие, можно ли вызвать его обратное в HTML, например. использовать:
"item in items | filter:!AllDay"
вместо
"item in items | filter:AllDay"
? Или вам нужно поддерживать два отдельных метода фильтрации (один для false и один для true)?
Ответы
Ответ 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})