2013-05-06 4 views
2

AngularJS를 사용하면 배열에서 항목의 하위 집합을 어떻게 만듭니 까?AngularJS에서 필터를 만드는 방법

예 : "done : true"항목 만 포함하는 "todos"에서 새 배열을 만듭니다.

function fooController ($scope) { 

$scope.todos = [ 
     {text:'foo'  , done:false}, 
     {text:'foobar'  , done:true}, 
     {text:'foofoo'  , done:false}, 
     {text:'foobar2' , done:true} 
] 

} 

http://docs.angularjs.org/api/ng.filter:filter

http://www.youtube.com/watch?v=WuiHuZq_cg4&list=PL173F1A311439C05D&context=C48ac877ADvjVQa1PpcFONnl4Q5x8hqvT6tRBTE-m0-Ym47jO3PEE%3D

에 대한 10시 45분 참조 - 전용 데이터> 최종

+0

좋아, 내가 http://stackoverflow.com/questions/16394055/checkbox-list-breaks-why-and-optimal에서 샘플을 만들 : 당신은 지금

ng-repeat='todo in todos | filter:{done:true}' 

이 바이올린 사용할 수 있습니다 -angularjs-way/16395257 # 16395257. – timactive

답변

5

그냥 필터를 추가 귀하의 ngRepeat에게 귀하가 원하는 것을 보여주십시오 :

ng-repeat='todo in todos | filter:done==true' 

바이올린 : 완전히 목록에서 요소를 제거하려면 http://jsfiddle.net/dPWsv/1/

, 바이올린의 archive 기능을 활용합니다.

참고 : 버전 1.1.3에서 필터 동작이 변경되었습니다. http://jsfiddle.net/UdbVL/1/

+0

나는 결국이 일을 얻었다. 도움을 주셔서 감사합니다. https://github.com/spudstud/angular-todo – spuder

0

좋아,

업데이트 변수가

모델

확인 :

$scope.todos = [ 
     {text:'foo'  , done:false}, 
     {text:'foobar'  , done:true}, 
     {text:'foofoo'  , done:false}, 
     {text:'foobar2' , done:true} 
] 

은 만 확인하려면 :

$scope.todoselect = $filter('filter')($scope.todos, {done:true}); 

모델 변경 당신은 당신의 변수가 너무

$scope.$watch('todos', function(newval, oldval){ 
         if (oldval != newval) 
         { 
         $scope.todoselect = $filter('filter')($scope.todos, {done: true}); 
          } 
          },true 
         ); 
    }); 

샘플 컨트롤러에 시계를 사용하여 업데이트 할 때 http://plnkr.co/edit/PnABre?p=preview

관련 문제