【发布时间】:2016-02-02 13:58:33
【问题描述】:
控制者:
var myApp = angular.module('myApp', []);
myApp.controller('myCtrl', ['$scope', '$filter', function($scope, $filter){
$scope.tickets = [
{title : 'ticket1', assignee : {id:'pratap', name: 'PRATAP'}},
{title : 'ticket2', assignee : null},
{title : 'ticket3', assignee : {id:'ak', name: 'AK'}}
];
$scope.defaultOption = 1;
$scope.options = [
{id:1, name : 'MY TICKETS'},
{id:2, name : 'OTHERS TICKET'}
];
$scope.filteredTicket = [];
$scope.filterData = function(criteria) {
if (criteria == 1) {
$scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: {id:'pratap'}});
} else {
$scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: null, assignee: {id:'ak'}});
console.log($scope.filteredTicket);
}
};
$scope.filterData($scope.defaultOption);
}]);
HTML:
<div ng-controller="myCtrl">
<div>Current User: pratap</div>
<div>
FILTER: <select ng-model="defaultOption" ng-change="filterData(defaultOption)" ng-options="option.id as option.name for option in options"></select>
</div>
<div>
<h1>Tickets</h1>
<ul>
<li ng-repeat="ticket in filteredTicket">{{ticket.title}}</li>
</ul>
</div>
</div>
我想知道是否可以在 $filter 中使用相同的对象属性来形成或条件,如下所示
$scope.filteredTicket = $filter('filter')($scope.tickets, {assignee: null, assignee: {id:'ak'}});
这样我就得到了具有受让人:null 和受让人:'ak' 的对象。如果我选择 OTHERS TICKETS 我需要显示ticket2 和ticket3,但到目前为止我只得到ticket3。
有人可以帮忙吗?
【问题讨论】:
-
同一个对象中不能有两个相同的参数;你需要重写你的过滤器来寻找一组受让人条件:
{assignee: [null,{id: 'ak'}]} -
如果我这样做,我会得到一个空数组作为回报
-
{assignee: foo, assignee: bar}不是一个有效的结构,这就是我的意思:冗余参数将相互覆盖。
标签: angularjs angularjs-filter