2015-12-30 156 views
1

我有一个对象,称为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> 

回答

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; 
} 
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; 
}); 
+0

感谢@Avijit。这个对我有用。其实我以不同的方式思考。但这是更好的方法。快乐编码:-) – Anudeep

相关问题