过滤具有对象的相同属性的多个值

时间:2015-12-30 10:10:04

标签: javascript angularjs angularjs-ng-repeat angular-filters

我有一个名为tasks的对象。它有各种各样的属性。现在我想只显示状态为to-doin-progress的任务。请帮助我如何在ng-repeat中应用过滤器。

$scope.tasks = [
 {
   'title': 'task one',
   'status': 'to-do'
 },

 {
   'title': 'task two',
   'status': 'in-progress'
 },

 {
   'title': 'task three',
   'status': 'completed'
 }

]

<div ng-repeat="task in tasks">
    <h1>{{task.name}}</h1>
    <p>{{task.status}}</p>
</div>

2 个答案:

答案 0 :(得分:2)

<div ng-repeat="task in tasks | filter: filteredTasks">
    <h1>{{task.name}}</h1>
    <p>{{task.status}}</p>
</div>

创建过滤器:

$scope.filteredTasks = function(task) {
  return (task.status === 'to-do' || task.status === 'in-progress') ? true: false;
});

答案 1 :(得分:1)

您需要为过滤器指定自定义函数。 这是一个有效的plnkr

代码:

<div ng-repeat="task in tasks | filter:status">
    <h1>{{task.name}}</h1>
    <p>{{task.status}}</p>
</div>

JS:

$scope.status = function(item) {
  if (item.status == 'to-do' || item.status == 'in-progress') return true;
}