2014-04-10 2 views
1

반복되는 기본 배열/객체를 조작하지 않고 ng-repeat에서 반복을 건너 뛸 수있는 방법이 있습니까? 각 1.0.8 : ng-repeat에서 반복을 건너 뛰는 방법

는 우리가 가지고 말 :

var steps = [ 
    { 
     enabled: true 
    }, 
    { 
     enabled: true 
    }, 
    { 
     enabled: false 
    } 
]; 

을 그리고는 "활성화"키를 봄으로써 세 번째 단계를 생략하고 싶다. 현대 각도에서 나는 사용한다 :

<div data-ng-repeat="step in steps" data-ng-if="step.enabled"> 

그러나 ng-if은 1.0.8에 존재하지 않습니다.

<div data-ng-repeat="step in steps | isEnabled" data-ng-if="step.enabled"> 

JS :

filter('isEnabled', function() { 
    return function(input) { 

     for(var i = 0; i < input.length; i++) { 
      if(!input[i]['enabled']) { 
       input.splice(i, 1); 
      } 
     }; 

     return input; 
    }; 
}) 

하지만 일어날 수 일본어 단계 객체를 조작을

난과 같이 필터를 만드는 시도. 나는 다음 단계를 복제하려고 :

filter('isEnabled', function() { 
    return function(input) { 

     var stepsBackup = angular.copy(input); 

     for(var i = 0; i < stepsBackup.length; i++) { 
      if(!stepsBackup[i]['enabled']) { 
       stepsBackup.splice(i, 1); 
      } 
     }; 

     return stepsBackup; 
    }; 
}) 

을하지만 그건 그냥 오류가 발생합니다 : Error: 10 $digest() iterations reached. Aborting! ... 나는 무엇을 놓치고

를?

답변

3

사용자 정의 필터를 정의 할 필요가 없습니다. AngularJS 필터는 객체를 filter: 표현식으로 전달하면 속성 필터링을 지원합니다. 예를 들어 :

<li ng-repeat="step in steps | filter: {enabled: true}">...</li> 

체크 아웃 당신이 계신 보여줍니다 생각이 바이올린은 (는 각도 1.0.8을 사용) :

http://jsfiddle.net/ck9u6/

+0

아이 굉장합니다! 고마워. – Dominik

관련 문제