2013-05-06 3 views
2

Использование AngularJS, как вы создаете подмножество элементов в массиве?Как создать фильтр в AngularJS

Например, создайте новый массив из «todos», который включает только элементы «done: true».

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 -angularjs-полосная/16395257 # 16395257. – timactive

ответ

5

Просто добавьте фильтр к вашему ngRepeat и только показать, что вы хотите:

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

Fiddle: http://jsfiddle.net/dPWsv/1/

Если вы хотите полностью удалить элемент из списка, использовать archive функции в скрипке.

Примечание: начиная с версии 1.1.3 изменилось поведение фильтра. Теперь вы будете использовать

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

Fiddle: http://jsfiddle.net/UdbVL/1/

+0

В итоге я получил эту работу. Спасибо за помощь. https://github.com/spudstud/angular-todo – spuder

0

Ok,

переменная обновления только данные проверены

ваша модель:

$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

Смежные вопросы