programing

angular.js 필터의 역극성

nicescript 2023. 4. 2. 13:29
반응형

angular.js 필터의 역극성

어떤 조건이 충족될 경우 true를 반환하는 필터 메서드를 지정하면 HTML에서 그 반대로 호출할 수 있습니다. 예를 들어 다음과 같습니다.

"item in items | filter:!AllDay"

대신

"item in items | filter:AllDay"

아니면 2개의 필터 방식(하나는 false, 다른 하나는 true)을 유지해야 합니까?

ENDOH에서 알 수 있듯이(이 SO 질문은 기술적으로 중복됩니다), 다음과 같이 필터 문자열 앞에 '!'를 추가하여 필터를 비활성화할 수 있습니다.

filter:'!'+myFilter

'!'는 따옴표로 둘러싸여 있습니다. 문서에는 그다지 명확하지 않고, 예를 들면 도움이 될 것입니다.

섀커의 답변은 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)
filter:({day: '!'+AllDay.day})

또 다른 옵션은 새로운 네고시에이션필터를 생성하여 파이프 접속하는 것입니다.

  .filter('not', function() {
    return function(input) {
      return !input;
    }
  })
"item in items | filter:AllDay | filter:not"

언급URL : https://stackoverflow.com/questions/13464809/reverse-polarity-of-an-angular-js-filter

반응형