2014-06-08 1 views
4

확인란을 사용하여 필터를 제거 할 수 있습니까?ng-repeat에서 필터를 동적으로 비활성화하는 방법

확인란을 선택하면 ng-repeat 내부의 필터가 비활성화됩니다. 예를 들어 countryfilterwinetypefilter 확인란을 선택하면 관련 필터가 비활성화됩니다.

원본 코드 (필터 사용)

<li ng-repeat="wine in wines | winetypefilter:winetypes| countryfilter:countrytypes | stylefilter:styletypes"> 
       {{wine.name}} is a {{wine.type}} with {{wine.style}} style from {{wine.country}} 
</li> 

(체크 박스로 사용할 필터, countryfilter 및 winetypefilter ) 가 초래 : 사용하지 않도록 설정할 수 있습니다 물론

<li ng-repeat="wine in wines | stylefilter:styletypes"> 
      {{wine.name}} is a {{wine.type}} with {{wine.style}} style from {{wine.country}} 
</li> 
+0

을 사용하거나 사용하지 않은 경우 – nilsK

답변

5

당신의 동적으로 필터를 ... 내 마음에 오는 가장 간단한 솔루션을 수행하는 여러 가지 방법이있을 수 있습니다 단지 che에 부울로 세 번째 매개 변수를 보내는 것입니다 CK 필터는 난 당신이 사용자 정의 필터를 작성해야합니다 생각 ... 여기

필터 샘플입니다 ... 여기 PLUNKER

app.filter('winetypefilter', function() { 
    return function(input, filter, isEnable) { 
    // if isEnable then filter out wines 
    if (isEnable) { 
     var result = []; 
     angular.forEach(input, function (wine) { 
      angular.forEach(filter, function (isfiltered, type) { 
       if (isfiltered && type === wine.type) { 
        result.push(wine); 
       } 
      }); 
     }); 
     return result; 
    } 
    // otherwise just do not any filter just send input without changes 
    else{ 
     return input 
    } 
    }; 
}); 

및 ...

+0

도움을 주셔서 감사합니다. 잘 작동합니다. :) –

+0

감사합니다. 제 사례는별로 복잡하지 않았습니다. 다른 필터를 사용하는 경우가 많았지 만,이 답변을 통해 내가 원하는 것을 성취 할 수있는 길을 찾았습니다 ... –

관련 문제